国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unittest自動(dòng)化測(cè)試框架詳解

這篇具有很好參考價(jià)值的文章主要介紹了unittest自動(dòng)化測(cè)試框架詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、單元測(cè)試的定義

二、unittest框架及原理

三、unittest的斷言

四、TestCase測(cè)試用例

五、TestFixure測(cè)試夾具

六、TestSuite測(cè)試套件

七、TestRunner執(zhí)行用例


一、單元測(cè)試的定義

1. 什么是單元測(cè)試?

? 單元測(cè)試是指,對(duì)軟件中的最小可測(cè)試單元在與程序其他部分相隔離的情況下進(jìn)行檢查和驗(yàn)證的工作,這里的最小可測(cè)試單元通常是指函數(shù)或者類,一般是開發(fā)來(lái)做的,按照測(cè)試階段來(lái)分,就是單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試以及驗(yàn)收測(cè)試。

2.為什么要做單元測(cè)試?

?? 單元測(cè)試之后,才是集成測(cè)試,單個(gè)單個(gè)的功能模塊測(cè)試通過(guò)之后,才能把單個(gè)功能模塊集成起來(lái)做集成測(cè)試,為了從底層發(fā)現(xiàn)bug,單元測(cè)試時(shí)可以減少合成后出現(xiàn)的問(wèn)題。

?? 越早發(fā)現(xiàn)bug越好,這樣可以早點(diǎn)發(fā)現(xiàn)問(wèn)題,不然問(wèn)題累計(jì)到后面,很可能會(huì)因?yàn)橐粋€(gè)做錯(cuò)了而導(dǎo)致整個(gè)模塊甚至更大范圍的推倒重來(lái),對(duì)于時(shí)間和經(jīng)費(fèi)來(lái)說(shuō),是非常浪費(fèi)的!

?? 對(duì)于測(cè)試來(lái)說(shuō),單元測(cè)試就是為了執(zhí)行用例,輸入測(cè)試數(shù)據(jù)--》輸出測(cè)試結(jié)果

二、unittest框架及原理

? 做過(guò)自動(dòng)化測(cè)試的同學(xué)應(yīng)該都知道python中的unittest框架,它是python自帶的一套測(cè)試框架,學(xué)習(xí)起來(lái)也相對(duì)較容易,unittest框架最核心的四個(gè)概念:

? ?? test case:就是我們的測(cè)試用例,unittest中提供了一個(gè)基本類TestCase,可以用來(lái)創(chuàng)建新的測(cè)試用例,一個(gè)TestCase的實(shí)例就是一個(gè)測(cè)試用例;unittest中測(cè)試用例方法都是以test開頭的,且執(zhí)行順序會(huì)按照方法名的ASCII值排序。

? ?? test fixure:測(cè)試夾具,用于測(cè)試用例環(huán)境的搭建和銷毀。即用例測(cè)試前準(zhǔn)備環(huán)境的搭建(SetUp前置條件),測(cè)試后環(huán)境的還原(TearDown后置條件),比如測(cè)試前需要登錄獲取token等就是測(cè)試用例需要的環(huán)境,運(yùn)行完后執(zhí)行下一個(gè)用例前需要還原環(huán)境,以免影響下一條用例的測(cè)試結(jié)果。

? ?? test suite:測(cè)試套件,用來(lái)把需要一起執(zhí)行的測(cè)試用例集中放到一塊執(zhí)行,相當(dāng)于一個(gè)籃子。我們可以使用TestLoader來(lái)加載測(cè)試用例到測(cè)試套件中。

? ?? test runner:用來(lái)執(zhí)行測(cè)試用例的,并返回測(cè)試用例的執(zhí)行結(jié)果。它還可以用圖形或者文本接口,把返回的測(cè)試結(jié)果更形象的展現(xiàn)出來(lái),如:HTMLTestRunner。

三、unittest的斷言

? 在python基礎(chǔ)中,我們有講過(guò)一個(gè)assert斷言,使用方法比較簡(jiǎn)單,即assert 表達(dá)式, 提示信息,而unittest框架中也提供了一個(gè)自帶的斷言方式,主要有以下幾種:

方法 檢查
assertEqual(a, b,msg=None) a ==b
assertNotEqual(a, b) a !=b
assertTrue(x) bool(x) is True
assertFalse(x) Bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a,b)
assertNotIsInstance(a, b) not isinstance(a,b)

? 如果斷言失敗即不通過(guò)就會(huì)拋出一個(gè)AssertionError斷言錯(cuò)誤,成功則標(biāo)識(shí)為通過(guò),以上幾種方式都有一個(gè)共同點(diǎn),就是都有一個(gè)msg參數(shù)(表中只列了一個(gè),其實(shí)都有),默認(rèn)是None,即msg = None,如果指定msg參數(shù)的值,則將該信息作為失敗的錯(cuò)誤信息返回。

四、TestCase測(cè)試用例

編寫測(cè)試用例前,我們需要建一個(gè)測(cè)試類繼承unittest里面的TestCase類,繼承這個(gè)類之后我們才是真正的使用unittest框架去寫測(cè)試用例,編寫測(cè)試用例的步驟如下:

  • 導(dǎo)入unittest模塊
  • 創(chuàng)建一個(gè)測(cè)試類,并繼承unittest.TestCase()
  • 定義測(cè)試方法,方法名必須以test_開頭
  • 調(diào)用unittest.main()方法來(lái)運(yùn)行測(cè)試用例,unittest.main()方法會(huì)搜索該模塊下所有以test開頭的測(cè)試用例方法,并自動(dòng)執(zhí)行

下面以注冊(cè)功能為例,這個(gè)register.py就是注冊(cè)功能的代碼,沒(méi)有前端界面,功能比較簡(jiǎn)單,只是方便用于演示,直接導(dǎo)入就可以使用。

# register.py
users = [{'username': 'test', 'password': '123456'}]


def register(username, password1, password2):

    if not all([username, password1, password2]):
        return {"code": 0, "msg": "所有參數(shù)不能為空"}
    # 注冊(cè)功能
    for user in users:
        if username == user['username']:
            return {"code": 0, "msg": "該用戶名已存在!"}
    else:
        if password1 != password2:
            return {"code": 0, "msg": "兩次密碼輸入不一致!"}
        else:
            if 6 <= len(username) >= 6 and 6 <= len(password1) <= 18:
                users.append({'username': username, 'password': password2})
                return {"code": 1, "msg": "注冊(cè)成功"}
            else:
                return {"code": 0, "msg": "用戶名和密碼必須在6-18位之間"}

? 下面是編寫測(cè)試用例例子:

# test_register.py
import unittest
from register import register   # 導(dǎo)入被測(cè)試的代碼


class TestRegister(unittest.TestCase):
    """注冊(cè)接口測(cè)試用例類"""

    def test_register_success(self):
        """注冊(cè)成功"""
        data = ("mikitest", "miki123", "miki123")   # 測(cè)試數(shù)據(jù)
        expected = {"code": 1, "msg": "注冊(cè)成功"}   # 預(yù)期結(jié)果
        result = register(*data)    # 把測(cè)試數(shù)據(jù)傳到被測(cè)的代碼,接收實(shí)際結(jié)果
        self.assertEqual(expected, result)  # 斷言,預(yù)期和實(shí)際是否一致,一致即用例通過(guò)

    def test_username_isnull(self):
        """注冊(cè)失敗-用戶名為空"""
        data = ("", "miki123", "miki123")
        expected = {"code": 0, "msg": "所有參數(shù)不能為空"}
        result = register(*data)
        self.assertEqual(expected, result)

    def test_username_lt6(self):
        """注冊(cè)失敗-用戶名大于18位"""
        data = ("mikitestmikitestmikitest", "miki123", "miki123")
        expected = {"code": 0, "msg": "用戶名和密碼必須在6-18位之間!"}
        result = register(*data)
        self.assertEqual(expected, result)	# 這條用例應(yīng)該是不通過(guò)的,注冊(cè)代碼bug

    def test_pwd1_not_pwd2(self):
        """注冊(cè)失敗-兩次密碼不一致"""
        data = ("miki123", "test123", "test321")
        expected = {"code": 0, "msg": "兩次密碼輸入不一致!"}
        result = register(*data)
        self.assertEqual(expected, result)


# 如果直接運(yùn)行這個(gè)文件,需要使用unittest中的main函數(shù)來(lái)執(zhí)行測(cè)試用例
if __name__ == '__main__':
    unittest.main()

?上面?zhèn)鬟f測(cè)試數(shù)據(jù)處用到一個(gè)*解包。? 測(cè)試用例運(yùn)行結(jié)果如下,一共4條用例,其中通過(guò)3條,不通過(guò)1條,不通過(guò)的是本身注冊(cè)代碼的bug。


Testing started at 21:58 ...
C:\software\python\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pycharm\_jb_unittest_runner.py" --target test_register.TestRegister
Launching unittests with arguments python -m unittest test_register.TestRegister in D:\learn\python_test


{'code': 1, 'msg': '注冊(cè)成功!'} != {'code': 0, 'msg': '用戶名和密碼必須在6-18位之間!'}

Expected :{'code': 0, 'msg': '用戶名和密碼必須在6-18位之間!'}
Actual   :{'code': 1, 'msg': '注冊(cè)成功!'}
<Click to see difference>

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pycharm\teamcity\diff_tools.py", line 32, in _patched_equals
    old(self, first, second, msg)
  File "C:\software\python\lib\unittest\case.py", line 839, in assertEqual
    assertion_func(first, second, msg=msg)
  File "C:\software\python\lib\unittest\case.py", line 1138, in assertDictEqual
    self.fail(self._formatMessage(msg, standardMsg))
  File "C:\software\python\lib\unittest\case.py", line 680, in fail
    raise self.failureException(msg)
AssertionError: {'code': 0, 'msg': '用戶名和密碼必須在6-18位之間!'} != {'code': 1, 'msg': '注冊(cè)成功!'}
- {'code': 0, 'msg': '用戶名和密碼必須在6-18位之間!'}
+ {'code': 1, 'msg': '注冊(cè)成功!'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\software\python\lib\unittest\case.py", line 59, in testPartExecutor
    yield
  File "C:\software\python\lib\unittest\case.py", line 615, in run
    testMethod()
  File "D:\learn\python24\python_base\day13_task\test_register.py", line 36, in test_username_lt6
    self.assertEqual(expected, result)


Ran 4 tests in 0.007s

FAILED (failures=1)

Process finished with exit code 1

Assertion failed

五、TestFixure測(cè)試夾具

? unittest的測(cè)試夾具有兩種使用方式,一種是以測(cè)試方法為維度的setUp()tearDown(),一種是以測(cè)試類為維度的setUpClass()tearDownClass()。以注冊(cè)功能為例,但這個(gè)注冊(cè)代碼比較簡(jiǎn)單,沒(méi)有真正需要用到測(cè)試夾具的地方,因此這只是個(gè)用法演示。


# test_register.py
import unittest
from register import register   # 導(dǎo)入被測(cè)試的代碼


class TestRegister(unittest.TestCase):
    """注冊(cè)接口測(cè)試用例類"""
    
    def setUp(self):
        # 每條用例執(zhí)行之前都會(huì)執(zhí)行
        print("用例{}開始執(zhí)行--".format(self))

    def tearDown(self):
        # 每條用例執(zhí)行之后都會(huì)執(zhí)行
        print("用例{}執(zhí)行結(jié)束--".format(self))

    @classmethod	# 指明這是個(gè)類方法以類為維度去執(zhí)行的
    def setUpClass(cls):
        # 整個(gè)測(cè)試用例類中的用例執(zhí)行之前,會(huì)先執(zhí)行此方法
        print("-----setup---class-----")

    @classmethod
    def tearDownClass(cls):
        # 整個(gè)測(cè)試用例類中的用例執(zhí)行完之后,會(huì)執(zhí)行此方法
        print("-----teardown---class-----")

    def test_register_success(self):
        """注冊(cè)成功"""
        data = ("mikitest", "miki123", "miki123")   # 測(cè)試數(shù)據(jù)
        expected = {"code": 1, "msg": "注冊(cè)成功!"}   # 預(yù)期結(jié)果
        result = register(*data)    # 把測(cè)試數(shù)據(jù)傳到被測(cè)的代碼,接收實(shí)際結(jié)果
        self.assertEqual(expected, result)  # 斷言,預(yù)期和實(shí)際是否一致,一致即用例通過(guò)

    def test_username_isnull(self):
        """注冊(cè)失敗-用戶名為空"""
        data = ("", "miki123", "miki123")
        expected = {"code": 0, "msg": "所有參數(shù)不能為空!"}
        result = register(*data)
        self.assertEqual(expected, result)


# 如果直接運(yùn)行這個(gè)文件,需要使用unittest中的main函數(shù)來(lái)執(zhí)行測(cè)試用例
if __name__ == '__main__':
    unittest.main()

? 運(yùn)行結(jié)果:

Testing started at 22:19 ...
C:\software\python\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1.3\helpers\pycharm\_jb_unittest_runner.py" --path D:/learn/python/test_register.py
Launching unittests with arguments python -m unittest D:/learn/python/test_register.py in D:\learn\python
-----setup---class-----用例test_pwd1_not_pwd2 (test_register.RegisterTestCase)開始執(zhí)行--
用例test_pwd1_not_pwd2 (test_register.RegisterTestCase)執(zhí)行結(jié)束--
用例test_register_success (test_register.RegisterTestCase)開始執(zhí)行--
用例test_register_success (test_register.RegisterTestCase)執(zhí)行結(jié)束--
用例test_username_isnull (test_register.RegisterTestCase)開始執(zhí)行--
用例test_username_isnull (test_register.RegisterTestCase)執(zhí)行結(jié)束--
用例test_username_lt6 (test_register.RegisterTestCase)開始執(zhí)行--
用例test_username_lt6 (test_register.RegisterTestCase)執(zhí)行結(jié)束--
-----teardown---class-----

Ran 4 tests in 0.003s

OK

Process finished with exit code 0

六、TestSuite測(cè)試套件

? unittest.TestSuite()類來(lái)表示一個(gè)測(cè)試用例集,把需要執(zhí)行的用例類或模塊存到一起,常用的方法如下:

?? unittest.TestSuite()

  • addTest():添加單個(gè)測(cè)試用例方法
  • addTest([..]):添加多個(gè)測(cè)試用例方法,方法名存在一個(gè)列表

?? unittest.TestLoader()

  • loadTestsFromTestCase(測(cè)試類名):添加一個(gè)測(cè)試類
  • loadTestsFromModule(模塊名):添加一個(gè)模塊
  • discover(測(cè)試用例的所在目錄):指定目錄去加載,會(huì)自動(dòng)尋找這個(gè)目錄下所有符合命名規(guī)則的測(cè)試用例
# run_test.py,與test_register.py、register.py同一目錄下
import unittest
import test_register

# 第一步,創(chuàng)建一個(gè)測(cè)試套件
suite = unittest.TestSuite()

# 第二步:將測(cè)試用例,加載到測(cè)試套件中
# 方式1,添加單條測(cè)試用例
# case = test_register.TestRegister("test_register_success")	# 創(chuàng)建一個(gè)用例對(duì)象,注意:通過(guò)用例類去創(chuàng)建測(cè)試用例對(duì)象的時(shí)候,需要傳入用例的方法名(字符串類型)
# suite.addTest(case)	# 添加用例到測(cè)試套件中

# 方式2,添加多條測(cè)試用例
# case1 = test_register.TestRegister("test_register_success")
# case2 = test_register.TestRegister("test_username_isnull")
# suite.addTest([case1, case2])	# 添加用例到測(cè)試套件中

# 方式3,添加一個(gè)測(cè)試用例類
# loader = unittest.TestLoader()	# 創(chuàng)建一個(gè)加載對(duì)象
# suite.addTest(loader.loadTestsFromTestCase(test_register.TestRegister))

# 方式4,添加一個(gè)模塊
loader = unittest.TestLoader()	# 創(chuàng)建一個(gè)加載對(duì)象
suite.addTest(loader.loadTestsFromModule(test_register))

# 方式5,指定測(cè)試用例的所在的目錄路徑,進(jìn)行加載
# loader = unittest.TestLoader()
# suite.addTest(loader.discover(r"d:\learn\python"))

? 通常我們使用方式4、5比較多,你可以根據(jù)實(shí)際情況來(lái)運(yùn)用。其中方式5,還可以自定義匹配規(guī)則,默認(rèn)是會(huì)尋找目錄下test*.py文件,即所有以test開頭命名的py文件,自定義如下:

loader = unittest.TestLoader()
suite.addTest(loader.discover(start_dir = r"d:\learn\python", pattern="test_case*.py"))		# 匹配規(guī)則:所有以test_case開頭的

七、TestRunner執(zhí)行用例

? test runner顧名思義就是用來(lái)執(zhí)行測(cè)試用例的,并且可以生成相應(yīng)的測(cè)試報(bào)告。測(cè)試報(bào)告有兩種展示形式,一種是text文本,一種是html格式。

? html格式的就是HTMLTestRunner了,HTMLTestRunner是 Python 標(biāo)準(zhǔn)庫(kù)的 unittest 框架的一個(gè)擴(kuò)展,它可以生成一個(gè)直觀清晰的 HTML 測(cè)試報(bào)告。使用的前提就是要下載?HTMLTestRunner.py,下載完后放在python的安裝目錄下的scripts目錄下即可。? text文本相對(duì)于html來(lái)說(shuō)過(guò)于簡(jiǎn)陋,與控制臺(tái)輸出的沒(méi)有什么區(qū)別,也幾乎沒(méi)有人使用,這里不作演示,使用方法是一樣的。我們結(jié)合前面的測(cè)試套件來(lái)演示一下如何生成html格式的測(cè)試報(bào)告:


# run_test.py,與test_register.py、register.py同一目錄下
import unittest
import test_register
from HTMLTestRunner import HTMLTestRunner

# 創(chuàng)建測(cè)試套件
suite = unittest.TestSuite()

# 通過(guò)模塊加載測(cè)試用例
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(test_register))

# 創(chuàng)建測(cè)試運(yùn)行程序啟動(dòng)器
runner = HTMLTestRunner(stream=open("report.html", "wb"),  # 打開一個(gè)報(bào)告文件,將句柄傳給stream
                        tester="miki",                    # 報(bào)告中顯示的測(cè)試人員
                        description="注冊(cè)接口測(cè)試報(bào)告",        # 報(bào)告中顯示的描述信息
                        title="自動(dòng)化測(cè)試報(bào)告")                 # 報(bào)告的標(biāo)題

# 使用啟動(dòng)器去執(zhí)行測(cè)試套件里的用例
runner.run(suite)

??相關(guān)參數(shù)說(shuō)明:

  • stream:指定輸出的方式
  • tester:報(bào)告中要顯示的測(cè)試人員的名字
  • description:報(bào)告中要顯示的面熟信息
  • title:測(cè)試報(bào)告的標(biāo)題
  • verbosity?:表示測(cè)試報(bào)告信息的詳細(xì)程度,一共三個(gè)值,默認(rèn)是2
    1. 0 (靜默模式):你只能獲得總的測(cè)試用例數(shù)和總的結(jié)果,如:總共100個(gè) 失敗10 成功90
    2. 1 (默認(rèn)模式):類似靜默模式,只是在每個(gè)成功的用例前面有個(gè). 每個(gè)失敗的用例前面有個(gè)F
    3. 2 (詳細(xì)模式):測(cè)試結(jié)果會(huì)顯示每個(gè)測(cè)試用例的所有相關(guān)的信息

運(yùn)行完畢,你會(huì)發(fā)現(xiàn)你的項(xiàng)目目錄下已經(jīng)生成了一個(gè)report.html文件,在瀏覽器中打開,就可以查看測(cè)試報(bào)告了。

unittest自動(dòng)化測(cè)試框架詳解文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-443140.html

到了這里,關(guān)于unittest自動(dòng)化測(cè)試框架詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 自動(dòng)化測(cè)試框架之unittest

    unittest 是python 的單元測(cè)試框架,它主要有以下作用: 提供用例組織與執(zhí)行 :當(dāng)你的測(cè)試用例只有幾條時(shí),可以不必考慮用例的組織,但是,當(dāng)測(cè)試用例達(dá)到成百上千條時(shí),大量的測(cè)試用例堆砌在一起,就產(chǎn)生了擴(kuò)展性與維護(hù)性等問(wèn)題,此時(shí)需要考慮用例的規(guī)范與組織問(wèn)題了

    2024年02月01日
    瀏覽(25)
  • Python自動(dòng)化測(cè)試框架:unittest介紹

    Unittest是Python中最常用的測(cè)試框架之一,它提供了豐富和強(qiáng)大的測(cè)試工具和方法,可以幫助開發(fā)者更好地保證代碼質(zhì)量和穩(wěn)定性,本文就來(lái)介紹下Unittest單元測(cè)試框架。 unittest是Python的單元測(cè)試框架,它提供了一套豐富的測(cè)試工具和方法,包括測(cè)試用例、測(cè)試套件、斷言、測(cè)試

    2024年02月05日
    瀏覽(34)
  • (六)Selenium自動(dòng)化測(cè)試實(shí)戰(zhàn)—unittest框架

    (六)Selenium自動(dòng)化測(cè)試實(shí)戰(zhàn)—unittest框架

    上一篇:(五)Selenium自動(dòng)化測(cè)試實(shí)戰(zhàn)—PO模式_要開朗的spookypop的博客-CSDN博客 先看下代碼的運(yùn)行效果: 運(yùn)行自動(dòng)化測(cè)試代碼 unittest是python單元測(cè)試框架,它提供了一組豐富的工具來(lái)構(gòu)建和運(yùn)行測(cè)試,可以滿足日常做自動(dòng)化測(cè)試的需求。 上一篇詳細(xì)的介紹了如何用PO模式寫登

    2023年04月14日
    瀏覽(19)
  • 自動(dòng)化測(cè)試框架unittest與pytest的區(qū)別!

    自動(dòng)化測(cè)試框架unittest與pytest的區(qū)別!

    前面文章已經(jīng)介紹了python單元測(cè)試框架,大家平時(shí)經(jīng)常使用的是unittest,因?yàn)樗容^基礎(chǔ),并且可以進(jìn)行二次開發(fā),如果你的開發(fā)水平很高,集成開發(fā)自動(dòng)化測(cè)試平臺(tái)也是可以的。而這篇文章主要講unittest與pytest的區(qū)別,pytest相對(duì)unittest而言,代碼簡(jiǎn)潔,使用便捷靈活,并且插

    2024年02月15日
    瀏覽(27)
  • Python自動(dòng)化測(cè)試:unittest與pytest框架

    在Python中, unittest 和 pytest 都是常用的自動(dòng)化測(cè)試框架。它們提供了編寫測(cè)試用例、測(cè)試套件和執(zhí)行測(cè)試的強(qiáng)大功能。 1. unittest框架 unittest 是Python標(biāo)準(zhǔn)庫(kù)的一部分,因此無(wú)需額外安裝。它提供了豐富的斷言方法,用于驗(yàn)證測(cè)試結(jié)果。 示例代碼: python復(fù)制代碼 import unittest c

    2024年02月20日
    瀏覽(38)
  • 自動(dòng)化測(cè)試概念(以及部分框架,selenium,unittest)

    ??能夠代替手工測(cè)試的方法和工具都可以稱為自動(dòng)化測(cè)試 ?? ??例如 ??針對(duì)不同的測(cè)試對(duì)象 ??web自動(dòng)化 ??app自動(dòng)化 ?接口自動(dòng)化 ?? ??針對(duì)不同的測(cè)試類型 ??功能測(cè)試自動(dòng)化 ??鏈接測(cè)試自動(dòng)化 ??性能測(cè)試自動(dòng)化 ??安全測(cè)試自動(dòng)化 ?? ??實(shí)施自動(dòng)化測(cè)試的目的在于

    2024年03月14日
    瀏覽(25)
  • Selenium+Unittest自動(dòng)化測(cè)試框架實(shí)戰(zhàn)(框架源碼都給你)

    Selenium+Unittest自動(dòng)化測(cè)試框架實(shí)戰(zhàn)(框架源碼都給你)

    目錄 前言 項(xiàng)目框架 首先管理時(shí)間 !/usr/bin/env python3 -- coding:utf-8 -- 配置文件 conf.py config.ini# 讀取配置文件 記錄操作日志 簡(jiǎn)單理解POM模型 管理頁(yè)面元素 封裝Selenium基類 創(chuàng)建頁(yè)面對(duì)象 熟悉unittest測(cè)試框架 編寫測(cè)試用例 執(zhí)行用例 生成測(cè)試報(bào)告 執(zhí)行并生成報(bào)告 發(fā)送結(jié)果郵件 se

    2024年02月15日
    瀏覽(25)
  • Python 自動(dòng)化測(cè)試框架unittest與pytest的區(qū)別

    Python 自動(dòng)化測(cè)試框架unittest與pytest的區(qū)別

    ?? 博客主頁(yè): 美團(tuán)程序員 ?? 專注于軟件測(cè)試領(lǐng)域相關(guān)技術(shù)實(shí)踐和思考,持續(xù)分享自動(dòng)化軟件測(cè)試開發(fā)干貨知識(shí)! ?? 如果你也想學(xué)習(xí)軟件測(cè)試,文末卡片有我的交流群632880530,加入我們,一起交流和學(xué)習(xí)! 引言 前面一篇文章Python單元測(cè)試框架介紹已經(jīng)介紹了python單元測(cè)

    2024年02月13日
    瀏覽(32)
  • Python自動(dòng)化測(cè)試框架:Pytest和Unittest的區(qū)別

    Python自動(dòng)化測(cè)試框架:Pytest和Unittest的區(qū)別

    pytest和unittest是Python中常用的兩種測(cè)試框架,它們都可以用來(lái)編寫和執(zhí)行測(cè)試用例,但兩者在很多方面都有所不同。本文將從不同的角度來(lái)論述這些區(qū)別,以幫助大家更好地理解pytest和unittest。 1. 原理 pytest是基于Python的assert語(yǔ)句和Python的自省特性實(shí)現(xiàn)測(cè)試框架,其原理是基于

    2024年02月10日
    瀏覽(29)
  • 【Python+requests+unittest+excel】實(shí)現(xiàn)接口自動(dòng)化測(cè)試框架

    【Python+requests+unittest+excel】實(shí)現(xiàn)接口自動(dòng)化測(cè)試框架

    一、框架結(jié)構(gòu): ?工程目錄 二、Case文件設(shè)計(jì) 三、基礎(chǔ)包 base 3.1 封裝get/post請(qǐng)求(runmethon.py) 3.2 封裝mock(mock.py) 四、數(shù)據(jù)操作包 operation_data 4.1 獲取excel單元格中的內(nèi)容(get_data.py) ? 4.2?獲取excel中每個(gè)列(data_config.py) 4.3?解決數(shù)據(jù)依賴(dependent.py?) 五、工具類包 to

    2024年02月15日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包