1.yaml 可以用來做資料驅動,比較靈活
import yaml #用來讀配置檔案的比如file檔案 檔案以yaml和yml結尾 這種格式寫用例比較容易處理,字典方便取值 取不到就沒有不報錯,主要是靈活。
f = open('login.yaml',encoding='utf-8')
res = yaml.load(f) #載入讀出檔案 將鍵值對轉化為字典
print(res)
比如:login.yml
- #是list的寫法 可以防止字典相同的key覆蓋
login.yaml
-
url: /user/login
method: post
datail: 正常登陸
data:
mobile: 18380416336
password: 123456
clienttype: 4
check:
- code
- url: /user/login
method: post
datail: 密碼錯誤
data:
mobile: 13013001301
password: 123456
clienttype: 4
check:
-code
2.利用yaml做資料驅動來做測試介面
import unittest,requests
import ddt # #可做引數化 自動讀檔案中資料
from beautifulreport import beautifulreport as bf
from urllib import parse
@ddt.ddt #申明這個類要別ddt使用啦
class login(unittest.testcase):
base_url = '' #為給url統一加字首 可寫入配置檔案比較好
@ddt.file_data('login.yaml')#ddt幫你讀檔案,獲取檔案內容,迴圈呼叫函式,並且傳給下面函式的如kwargs中,有多少條資料迴圈呼叫多少次下面的函式 注意修改檔案open原始碼加入utf8編碼開啟不報錯
def test_request(self,**kwargs):
detail = kwargs.get('detail','沒寫用例描述') # '''和%s組合來描述用例在這裡無效。
self._testmethoddoc = detail #動態的用例描述
url = kwargs.get('url')#url
url = parse.urljoin(self.base_url,url)#拼接好url 只能拼接 比如關於/的問題處理
method = kwargs.get('method','get')#請求方式給他乙個預設值get 防止沒有傳請求方式
data = kwargs.get('data',{}) #請求引數
header = kwargs.get('header',{})#請求頭
cookie = kwargs.get('cookie',{})#cookie
check = kwargs.get('check')
method = method.lower() #便於處理
try:
if method=='get':
res = requests.get(url,params=data,cookies=cookie,headers=header).text
#因為介面有異常的情況下, 可能返回的不是json串,會報錯
else:
res = requests.post(url,data=data,cookies=cookie,headers=header).text
except exception as e:
print('介面請求出錯')
res = e
for c in check:
self.assertin(c,res,msg='預計結果不符,預期結果【%s】,實際結果【%s】'%(c,res)) #檢視是否包含 斷言檢視一次錯誤就停止,後面加如錯誤提示 但check在yml中得是list方便檢視是否包含。
sutie = unittest.testsuite()
sutie.addtest(unittest.makesuite(login))#新增用例
run = bf(sutie) #例項化
run.report('login_test','登入測試用例')
print(run.success_count) #通過的次數
print(run.failure_count) #失敗的次數
import ddt # #可做引數化 自動讀檔案中資料
from beautifulreport import beautifulreport as bf
from urllib import parse
@ddt.ddt #申明這個類要別ddt使用啦
class login(unittest.testcase):
base_url = '' #為給url統一加字首 可寫入配置檔案比較好
@ddt.file_data('login.yaml')#ddt幫你讀檔案,獲取檔案內容,迴圈呼叫函式,並且傳給下面函式的如kwargs中,有多少條資料迴圈呼叫多少次下面的函式 注意修改檔案open原始碼加入utf8編碼開啟不報錯
def test_request(self,**kwargs):
detail = kwargs.get('detail','登入用例描述') # '''和%s組合來描述用例在這裡無效。
self._testmethoddoc = detail #動態的用例描述
url = kwargs.get('url')#url
url = parse.urljoin(self.base_url,url)#拼接好url 只能拼接 比如關於/的問題處理
method = kwargs.get('method','get')#請求方式給他乙個預設值get 防止沒有傳請求方式
data = kwargs.get('data',{}) #請求引數
header = kwargs.get('header',{})#請求頭
cookie = kwargs.get('cookie',{})#cookie
check = kwargs.get('check')
method = method.lower() #便於處理
try:
if method=='get':
res = requests.get(url,params=data,cookies=cookie,headers=header).text
#因為介面有異常的情況下, 可能返回的不是json串,會報錯
else:
res = requests.post(url,data=data,cookies=cookie,headers=header).text
except exception as e:
print('介面請求出錯')
res = e
for c in check:
self.assertin(c,res,msg='預計結果不符,預期結果【%s】,實際結果【%s】'%(c,res)) #檢視是否包含 斷言檢視一次錯誤就停止,後面加如錯誤提示 但check在yml中得是list方便檢視是否包含。
sutie = unittest.testsuite()
sutie.addtest(unittest.makesuite(login))#新增用例
run = bf(sutie) #例項化
run.report('login_test','登入測試用例')
print(run.success_count) #通過的次數
print(run.failure_count) #失敗的次數
七 HTMLTestRunner生成測試報告
coding utf 8 created on 2019 01 21 author codeali import os import unittest import time import logging from lib import pathdeal from lib import log fr...
測試人員應該如何報bug?
首先,確保你所發現的問題是確實是乙個bug,不要出現因為測試人員操作錯誤或配置錯誤所引起的 bug 這樣會降低你在開發人員心中的可信度。在測試的時候,如果發現測試的實際結果與預期測試結果不符時,不要著急馬上報bug,先想想為什麼會出現錯誤。作為專業的測試人員,應該能夠對出現的問題進行跟蹤,確認了在配...
使用Pyunit執行測試並生成HTML報告
1.使用pyunit執行測試 使用python自帶模組unittest就可以進行單元測試,但是遇到unittest.testcase報錯,錯誤是 原因是電腦中,除了python目錄下有unittest,其他地方還存在unittest.py.但是在執行指令碼時,又沒有選擇到自己想要的pythonpat...