<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## **5.4 讀取數據文件** 雖然前面的例子中用到了參數化,但大多數測試更傾向于把測試數據放到數據文件中。 下面介紹幾種常見的讀取數據文件的方法。 ### **5.4.1 讀取 txt 文件** txt 文件是我們經常操作的文件類型,Python 提供了以下幾種讀取 txt 文件的方法。 * read():讀取整個文件。 * readline():讀取一行數據。 * readlines():讀取所有行的數據。 回到前面登錄的例子,現在把用戶名和密碼存放到 txt 文件,然后讀取該 txt 文件中的數據作為測試用例的數據。創建./data_file/user_info.txt 文件。 ``` :123 zjut_cheng: cc:1 ``` 這里將用戶名和密碼按行寫入 txt 文件中,用戶名和密碼之間用冒號“:”隔開。創建read_txt.py 文件,用于讀取 txt 文件。 ``` with(open("./data_file/user_info.txt", "r")) as user_file: data = user_file.readlines() # 格式化處理 users = [] for line in data: user = line[:-1].split(":") users.append(user) # 打印users二維數組 print(users) ``` 運行結果如下: ``` [['', '123'], ['zjut_cheng', ''], ['cc', '']] ``` 首先通過 open()以讀(“r”)的方式打開 user_info.txt 文件,readlines()可讀取文件中的所有行并賦值給變量 data。 接下來循環 data 中的每一行數據,[:-1] 可對字符串進行切片,以省略最后一個字符,因為讀取的每一行數據結尾都有一個換行符“\n”。split()通過冒號(:)對每行數據進行拆分,會得到數組['', '123'] 。 最后使用 append()把每一組用戶名和密碼追加到 users 數組中。 取 users 數組中的數據,將得到的數組用不同的用戶名/密碼進行登錄,代碼如下。 ``` # 調用 Mail 類 mail = Mail(driver) # 用戶名為空 mail.login(users[0][0], users[0][1]) # 密碼為空 mail.login(users[1][0], users[1][1]) # 用戶名/密碼錯誤 mail.login(users[2][0], users[2][1]) … ``` ### **5.4.2 讀取 CSV 文件** CSV 文件可用來存放固定字段的數據,下面我們把用戶名、密碼和斷言保存到 CSV文件中,如圖 5-2 所示。 ![](https://img.kancloud.cn/bf/f7/bff77d4c1bcd60ef8d866a86f310bd4c_392x149.png) **注意:** 可以把 WPS 表格或 Excel 表格通過文件“另存為”保存為 CSV 類型的文 件,但不要直接修改文件的后綴名來創建 CSV 文件,因為這樣的文件并非真正的 CSV 類型的文件。 <br /> 下面編寫 read_csv.py 文件進行循環讀取。 ``` # coding:utf-8 import csv from itertools import islice # 讀取本地 CSV 文件 data = csv.reader(open('./data_file/user_info.csv', 'r', encoding='utf-8')) # 存放用戶數據 users = [] # 循環輸出每行信息 for line in islice(data, 1, None): users.append(line) # 打印 print(users) ``` 運行結果如下。 ``` [['', '123', '請輸入賬號'], ['user', '', '請輸入密碼'], ['error', 'error', '賬號錯誤'],] ``` 通過 Python 讀取 CSV 文件比較簡單,但會遇到兩個問題。 (1)中文亂碼問題。在數據文件中我們不可避免地會使用中文,codecs 是 Python 標準的模塊編碼和解碼器。首先,通過 codecs 提供的 open()方法,在打開文件時可以指定編碼類型,如 utf_8_sig;然后,導入 csv 模塊,通過 reader()方法讀取文件,即避免中文亂碼問題。 (2)跳過 CSV 文件的第一行。因為我們一般會在第一行定義測試字段名,所以在讀取數據時需要跳過。Python 的內建模塊 itertools 提供了用于操作迭代對象的函數,即 islice()函數,它可以返回一個迭代器,第一個參數指定迭代對象,第二個參數指定開始迭代的位置,第三個參數表示結束位。 <br /> ### **5.4.3 讀取 XML 文件** 有時我們需要讀取的數據是不規則的。例如,我們需要用一個配置文件來配置當前自動化測試平臺、瀏覽器、URL、登錄的用戶名和密碼等,這時就可以使用 XML 文件來存放這些測試數據。 創建 config.xml 文件,代碼如下。 ``` <?xml version="1.0" encoding="utf-8" ?> <info> <platforms> <platfprm>Windows</platfprm> <platfprm>Linux</platfprm> <platfprm>macOS</platfprm> </platforms> <browsers> <browser>Firefox</browser> <browser>Chrome</browser> <browser>Edge</browser> </browsers> <url>https://email.163.com/</url> <login username="admin" password="123456"/> <login username="guest" password="123"/> </info> ``` 通過代碼可以看出,數據主要存放在標簽對之間,如`<platform>Windows</platform>`。或者是作為標簽的屬性存放,如`<login username="admin" password="123456"/>`。 下面以 config.xml 文件為例,介紹讀取 XML 文件的方法。 <br /> **1.獲得標簽對之間的數據** ``` from xml.dom.minidom import parse # 打開xml文件 dom = parse('./data_file/config.xml') # 得到文檔元素對象 root = dom.documentElement # 獲取(一組)標簽 tag_name = root.getElementsByTagName('os') print(tag_name[0].firstChild.data) print(tag_name[1].firstChild.data) print(tag_name[2].firstChild.data) ``` 運行結果如下。 ``` Windows Linux macOS ``` Python 自 帶 讀 取 XML 文件的模塊,通過 parse() 方 法 可 讀 取 XML 文件。 documentElement()方法用于獲取文檔元素對象,getElementsByTagName()方法用于獲取文件中的標簽。我們不需要指定標簽的層級關系,即獲取的標簽可以是任意層級的,之所以在定義 XML 文件時設置層級,僅僅是為了方便閱讀。 接下來,獲取標簽數組中的某個元素。firstChild 屬性可返回被選節點的第一個子節點,data 表示獲取該節點的數據,它和 WebDriver 中的 text 語句作用相似。 <br /> **2.獲得標簽的屬性值** ``` from xml.dom.minidom import parse # 打開xml文件 dom = parse('./data_file/config.xml') root = dom.documentElement login_info = root.getElementsByTagName('login') # 獲得login標簽的username屬性值 username = login_info[0].getAttribute("username") print(username) # 獲得login標簽的password屬性值 password = login_info[0].getAttribute("password") print(password) # 獲得第二個login標簽的username屬性值 username = login_info[1].getAttribute("username") print(username) # 獲得第二個login標簽的password屬性值 password = login_info[1].getAttribute("password") print(password) ``` 運行結果如下。 ``` admin 123456 guest 123 ``` <br /> ### **5.4.4 讀取 JSON 文件** JSON 是一種輕量級的數據交換格式,清晰的層次結構使得 JSON 文件被廣泛使用。 Python 同樣可以讀取 JSON 文件,下面創建 user_info.json 文件。 ``` [ {"username":"", "password":""}, {"username":"", "password":"123"}, {"username":"user", "password":""}, {"username":"error", "password":"error"} ] ``` 創建 read_json.py 文件。 ``` import json with open("./data_file/user_info.json", "r") as f: data = f.read() user_list = json.loads(data) print(user_list) ``` 通過 open()方法即可讀取 user_info.json 文件。因為測試數據本身是以列表和字典格式存放的,所以讀取整個文件內容后,通過 JSON 提供的表將 str 類型轉換為 list 類型即可。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看