人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

python中unittest框架應(yīng)用詳解

發(fā)布日期:2022-01-03 04:54 | 文章來源:CSDN

1、Unittest為Python內(nèi)嵌的測試框架,不需要特殊配置

2、編寫規(guī)范

需要導(dǎo)入 import unittest

測試類必須繼承unittest.TestCase

測試方法以 test_開頭

模塊和類名沒有要求

TestCase 理解為寫測試用例

TestSuite 理解為測試用例的集合

TestLoader 理解為的測試用例加載

TestRunner 執(zhí)行測試用例,并輸出報告

import unittest
from class_api_login_topup.demo import http_request
from class_api_login_topup.http_attr import Get_Attr  # 反射的值 獲取 cookies
# 這是文件http_attr中的Get_Attr類
class Get_Attr:
 cookies = None
class Login_Http(unittest.TestCase):
 def __init__(self, methodName, url, data, method, expected):
  super(Login_Http, self).__init__(methodName)  # 超繼承
  self.url = url
  self.data = data
  self.expected = expected
  self.method = method
 def test_api(self):  # 正常登錄
  res = http_request().request(self.url, self.data, self.method, getattr(Get_Attr, 'cookies'))
  if res.cookies:
setattr(Get_Attr, 'cookies', res.cookies)
  try:
self.assertEqual(self.expected, res.json()['code'])
  except AssertionError as e:
print("test_api's, error is {0}", format(e))
raise e
  print(res.json())
if __name__ == '__main__':
 unittest.main()

執(zhí)行一:

import unittest
from class_demo_login_topup.http_tools import Login_Http
suite = unittest.TestSuite()
loader = unittest.TestLoader()
test_data = [{'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login',
  'data': {'mobilephone': 'xxxx', 'pwd': '123456'}, 'expected': '10001', 'method': 'get'},
 {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/login',
  'data': {'mobilephone': 'xxxx', 'pwd': '12345678'}, 'expected': '20111', 'method': 'get'},
 {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge',
  'data': {'mobilephone': 'xxxx', 'amount': '1000'}, 'expected': '10001', 'method': 'post'},
 {'url': 'http://test.lemonban.com/futureloan/mvc/api/member/recharge',
  'data': {'mobilephone': 'xxxx', 'amount': '-100'}, 'expected': '20117', 'method': 'post'}]
# 遍歷數(shù)據(jù),執(zhí)行腳本 addTest 單個執(zhí)行
for item in test_data:
 suite.addTest(Login_Http('test_api', item['url'], item['data'], item['method'], item['expected']))
#  執(zhí)行
with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file:
 runner = unittest.TextTestRunner(stream=file, verbosity=2)
 runner.run(suite)
# 運行結(jié)果
{'status': 1, 'code': '10001', 'data': None, 'msg': '登錄成功'}
{'status': 0, 'code': '20111', 'data': None, 'msg': '用戶名或密碼錯誤'}
{'status': 1, 'code': '10001', 'data': {'id': 10011655, 'regname': '小蜜蜂', 'pwd': 'E10ADC3949BA59ABBE56E057F20F883E', 'mobilephone': 'xxxx', 'leaveamount': '150000.00', 'type': '1', 'regtime': '2021-07-14 14:54:08.0'}, 'msg': '充值成功'}
{'status': 0, 'code': '20117', 'data': None, 'msg': '請輸入范圍在0到50萬之間的正數(shù)金額'}

執(zhí)行二:把test_data的數(shù)據(jù)放在EXCEL中運行。

import unittest
from class_demo_login_topup.http_tools import Login_Http
suite = unittest.TestSuite()
loader = unittest.TestLoader()
test_data = HttpExcel('test_api.xlsx', 'python').real_excel()
for item in test_data:
 suite.addTest(Login_Http('test_api', item['url'], eval(item['data']), item['method'], str(item['expected'])))
with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file:
 runner = unittest.TextTestRunner(stream=file, verbosity=2)
 runner.run(suite)

執(zhí)行三、直接用裝飾器ddt

import unittest
from class_api_login_topup.demo import http_request
from class_api_login_topup.http_attr import Get_Attr  # 反射的值
from ddt import ddt, data, unpack
from class_demo_login_topup.http_excel import HttpExcel
test_data = HttpExcel('test_api.xlsx', 'python').real_excel()
@ddt
class Login_Http(unittest.TestCase):
 @data(*test_data)
 def test_api(self, item):  # 正常登錄
  res = http_request().request(item['url'], eval(item['data']), item['method'], getattr(Get_Attr, 'cookies'))
  if res.cookies:
setattr(Get_Attr, 'cookies', res.cookies)
  try:
self.assertEqual(str(item['expected']), res.json()['code'])
  except AssertionError as e:
print("test_api's, error is {0}", format(e))
raise e
  print(res.json())

執(zhí)行ddt方式一

import unittest
from class_demo_login_topup.http_tools import Login_Http
from class_demo_login_topup.http_excel import HttpExcel
suite = unittest.TestSuite()
loader = unittest.TestLoader()
from class_demo_login_topup import http_tools_1
suite.addTest(loader.loadTestsFromModule(http_tools_1))  # 執(zhí)行整個文件
with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file:
 runner = unittest.TextTestRunner(stream=file, verbosity=2)
 runner.run(suite)

執(zhí)行ddt方式二

import unittest
from class_demo_login_topup.http_tools import Login_Http  # 不用ddt的方法
from class_demo_login_topup.http_excel import HttpExcel
suite = unittest.TestSuite()
loader = unittest.TestLoader()
from class_demo_login_topup.http_tools_1 import * # http_tools_1文件是用ddt的方法
suite.addTest(loader.loadTestsFromTestCase(Login_Http))  # 執(zhí)行http_tools_1 文件下的Login_Http類,按照類執(zhí)行
with open('http_TestCase.txt', 'w+', encoding='UTF-8') as file:
 runner = unittest.TextTestRunner(stream=file, verbosity=2)
 runner.run(suite)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注本站的更多內(nèi)容!

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部