unittest和request使用(斷言,生成HTML測試報告)
阿新 • • 發佈:2021-06-23
unittest初級
import unittest
def my_sum(a, b):
a += 1
b += 2
return a + b
class TestSum(unittest.TestCase):
def test_01(self):
print(my_sum(2, 1))
def test_02(self):
print(my_sum(-1, 1))
def test_03(self):
print(my_sum(0, 1))
def test_04(self):
print(my_sum(1, -4))
# 將測試用例新增到套件裡
# 生成套件物件
suite = unittest.TestSuite()
# 一一新增測試用例到測試套件裡
suite.addTest(TestSum("test_01"))
suite.addTest(TestSum("test_02"))
# 執行suite物件中的用例
runner = unittest.TextTestRunner()
runner.run(suite)
import time
if __name__ == '__main__':
time.sleep(3)
TestSum()
(二)高階
import unittest from request_test.test04 import TestSum1 from request_test.test04 import TestSum2 def my(a, b): a += 1 b += 2 return a + b # 首先生成測試用例 class TestSum(unittest.TestCase): def test01(self): number=(my(2, 1)) self.assertEqual(number,6) def test02(self): number=(my(-1, 1)) self.assertEqual(number, 3) def test03(self): number=(my(0, 1)) self.assertEqual(number, 4) def test04(self): number=(my(1, -4)) self.assertEqual(number, 0) # 將測試用例新增到套件裡 # 生成套件物件 suite = unittest.TestSuite() # 一一新增測試用例到測試套件裡 suite.addTest(TestSum("test01")) suite.addTest(TestSum("test02")) suite.addTest(TestSum("test03")) suite.addTest(TestSum("test04")) # 一次行新增一個類裡面的所有的用例 # suite.addTest(unittest.makeSuite(TestSum1)) # suite.addTest(unittest.makeSuite(TestSum2)) # 批量新增一個py檔案裡面所有的用例 # suite = unittest.TestLoader().discover('./','test04.py') # 執行suite物件中的用例 runner = unittest.TextTestRunner() runner.run(suite)
如圖:# 一次行新增一個類裡面的所有的用例
# suite.addTest(unittest.makeSuite(TestSum1)) # suite.addTest(unittest.makeSuite(TestSum2))
如上圖:批量新增一個py檔案裡面所有的用例
# suite = unittest.TestLoader().discover('./','test04.py')
(三)request和unittest自動化校驗
首先建立一個yun.test.py和yun_run.py檔案
yun.test.py中有兩種不同的新增資料方法
import json, unittest, parameterized, requests def yun_login(username, password): # 請求的url url = "http://yun.zenm.vip/iot/account/login/" data = { "username": username, "password": password, } json_data = json.dumps(data) header = { 'Content-Type': 'application/json' } res = requests.post(url=url, data=json_data, headers=header) json_data = res.json() return json_data # 為當前的介面寫測試用例 class Yun_test(unittest.TestCase): def test_01(self): # 準備請求的資料和斷言資料 username = 'NestleWMS' password = 'NestleWMS' code = 200 # 獲取requests請求以後的json資料 json_data = yun_login(username, password) self.assertEqual(int(json_data["result"]), code) # 錯誤的使用者名稱 def test_02(self): # 準備請求的資料和斷言資料 username = 'NestleWMS1' password = 'NestleWMS' code = 5 # 獲取requests請求以後的json資料 json_data = yun_login(username, password) self.assertEqual(int(json_data["result"]), code) # 錯誤的密碼 def test_03(self): # 準備請求的資料和斷言資料 username = 'NestleWMS' password = 'NestleWMS2' code = 4 # 獲取requests請求以後的json資料 json_data = yun_login(username, password) self.assertEqual(int(json_data["result"]), code)
#批量測
# class Yun_test2(unittest.TestCase):
# @parameterized.parameterized.expand(
# [('NestleWMS', 'NestleWMS', 200), ('NestleWMS1', 'NestleWMS', 5), ('NestleWMS', 'NestleWMS2', 4)])
# def test04(self, username, password, code):
# # 獲取requests請求以後的json資料
# json_data = yun_login(username, password, code)
# self.assertEqual(int(json_data["result"]), code)
如圖:
第二步在yun_run.py中寫入以下程式碼
import unittest from request_test.HTMLTestRunner import HTMLTestRunner from request_test.yun_test import Yun_test from request_test.yun_test import Yun_test2 # 載入到case套件裡 suite = unittest.TestSuite() # suite.addTest(unittest.makeSuite(Yun_test)) suite.addTest(unittest.makeSuite(Yun_test2)) # 執行套件,生成測試報告 f = open('yun_run_test2.html', 'wb') runner = HTMLTestRunner(stream=f, title='雲系統登入測試報告', description='Chrome 瀏覽器') runner.run(suite) f.close()
隨後生成雲系統登入測試報告
yun_run_test2.html(單個新增)
yun_run_test2.html(批量新增)
如圖: