BeautifulReport 測試報告

2021-10-09 11:32:52 字數 4180 閱讀 9503

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...