最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中unittest框架應用詳解

 更新時間:2021年09月17日 16:32:08   作者:小木可菜鳥測試一枚  
這篇文章主要介紹了Python中Unittest框架的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

2、編寫規(guī)范

需要導入 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'}]
# 遍歷數據,執(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)
# 運行結果
{'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萬之間的正數金額'}

執(zhí)行二:把test_data的數據放在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)

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • Python爬蟲之Selenium實現窗口截圖

    Python爬蟲之Selenium實現窗口截圖

    這篇文章主要介紹了Python爬蟲之Selenium實現窗口截圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Python Pandas常用函數方法總結

    Python Pandas常用函數方法總結

    今天給大家?guī)淼氖顷P于Python的相關知識,文章圍繞著Pandas常用函數方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python中plt.scatter()函數的常見用法小結

    Python中plt.scatter()函數的常見用法小結

    這篇文章主要介紹了Python中plt.scatter()函數的常見用法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 基于Python實現植物大戰(zhàn)僵尸游戲的示例代碼

    基于Python實現植物大戰(zhàn)僵尸游戲的示例代碼

    植物大戰(zhàn)僵尸是一款經典的塔防類游戲,玩家通過種植各種植物來抵御僵尸的攻擊,本文將詳細介紹如何使用Python和Pygame庫來實現一個簡單的植物大戰(zhàn)僵尸游戲,文中通過代碼示例講解的非常詳細,感興趣的小伙伴跟著小編一起來看看吧
    2024-10-10
  • python求質數列表的例子

    python求質數列表的例子

    今天小編就為大家分享一篇python求質數列表的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Pytorch+PyG實現GIN過程示例詳解

    Pytorch+PyG實現GIN過程示例詳解

    這篇文章主要為大家介紹了Pytorch+PyG實現GIN過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • python基礎知識之try...except...的詳細用法實例

    python基礎知識之try...except...的詳細用法實例

    在各種編程語言進行工作和學習的過程中,都會有一些錯誤異常,下面這篇文章主要給大家介紹了關于python基礎知識之try...except...的詳細用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • YOLOv5中SPP/SPPF結構源碼詳析(內含注釋分析)

    YOLOv5中SPP/SPPF結構源碼詳析(內含注釋分析)

    其實關于YOLOv5的網絡結構其實網上相關的講解已經有很多了,但是覺著還是有必要再給大家介紹下,下面這篇文章主要給大家介紹了關于YOLOv5中SPP/SPPF結構源碼的相關資料,需要的朋友可以參考下
    2022-05-05
  • Appium+Python自動化測試之運行App程序示例

    Appium+Python自動化測試之運行App程序示例

    這篇文章主要介紹了Appium+Python自動化測試之運行App程序示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python數據結構之圖的應用示例

    Python數據結構之圖的應用示例

    這篇文章主要介紹了Python數據結構之圖的應用,結合實例形式分析了Python數據結構中圖的定義與遍歷算法相關操作技巧,需要的朋友可以參考下
    2018-05-05

最新評論

孟村| 桑植县| 长治县| 新密市| 集贤县| 区。| 九龙县| 莆田市| 兴业县| 巴楚县| 平潭县| 日照市| 高州市| 波密县| 新竹市| 长子县| 高平市| 出国| 清丰县| 旺苍县| 隆昌县| 伊川县| 东阿县| 珲春市| 尚志市| 沧州市| 罗江县| 巨野县| 卢龙县| 荆门市| 河曲县| 中山市| 肥乡县| 永昌县| 招远市| 榆林市| 即墨市| 安国市| 万年县| 泸溪县| 屏东市|