python基準(zhǔn)測(cè)試函數(shù)的簡(jiǎn)單介紹

Python 編寫并測(cè)試函數(shù)change(str1),其功能是對(duì)參數(shù)str1進(jìn)行大小寫轉(zhuǎn)換?

def change(str1):

清河門ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

new_str = str()

for i in range(len(str1)):

if(65 = ord(str1[i]) = 90):

a = str1[i].lower()

print(a,end='')

elif(97 = ord(str1[i]) = 122):

a = str1[i].upper()

print(a,end='')

else:

a = str1[i]

print(a,end='')

return new_str

str2 = str(input("要轉(zhuǎn)換的字符串:"))

print(change(str2))

python函數(shù)有哪些

1、print()函數(shù):打印字符串;

2、raw_input()函數(shù):從用戶鍵盤捕獲字符;

3、len()函數(shù):計(jì)算字符長(zhǎng)度;

4、format()函數(shù):實(shí)現(xiàn)格式化輸出;

5、type()函數(shù):查詢對(duì)象的類型;

6、int()函數(shù)、float()函數(shù)、str()函數(shù)等:類型的轉(zhuǎn)化函數(shù);

7、id()函數(shù):獲取對(duì)象的內(nèi)存地址;

8、help()函數(shù):Python的幫助函數(shù);

9、s.islower()函數(shù):判斷字符小寫;

10、s.sppace()函數(shù):判斷是否為空格;

11、str.replace()函數(shù):替換字符;

12、import()函數(shù):引進(jìn)庫(kù);

13、math.sin()函數(shù):sin()函數(shù);

14、math.pow()函數(shù):計(jì)算次方函數(shù);

15、os.getcwd()函數(shù):獲取當(dāng)前工作目錄;

16、listdir()函數(shù):顯示當(dāng)前目錄下的文件;

17、time.sleep()函數(shù):停止一段時(shí)間;

18、random.randint()函數(shù):產(chǎn)生隨機(jī)數(shù);

19、range()函數(shù):返回一個(gè)列表,打印從1到100;

20、file.read()函數(shù):讀取文件返回字符串;

21、file.readlines()函數(shù):讀取文件返回列表;

22、file.readline()函數(shù):讀取一行文件并返回字符串;

23、split()函數(shù):用什么來間隔字符串;

24、isalnum()函數(shù):判斷是否為有效數(shù)字或字符;

25、isalpha()函數(shù):判斷是否全為字符;

26、isdigit()函數(shù):判斷是否全為數(shù)字;

27、 lower()函數(shù):將數(shù)據(jù)改成小寫;

28、upper()函數(shù):將數(shù)據(jù)改成大寫;

29、startswith(s)函數(shù):判斷字符串是否以s開始的;

30、endwith(s)函數(shù):判斷字符串是否以s結(jié)尾的;

31、file.write()函數(shù):寫入函數(shù);

32、file.writeline()函數(shù):寫入文件;

33、abs()函數(shù):得到某數(shù)的絕對(duì)值;

34、file.sort()函數(shù):對(duì)書數(shù)據(jù)排序;

35、tuple()函數(shù):創(chuàng)建一個(gè)元組;

36、find()函數(shù):查找 返回的是索引;

37、dict()函數(shù):創(chuàng)建字典;

38、clear()函數(shù):清楚字典中的所有項(xiàng);

39、copy()函數(shù):復(fù)制一個(gè)字典,會(huì)修改所有的字典;

40、 get()函數(shù):查詢字典中的元素。

…………

python中eval()函數(shù)的作用是什么?

python中eval函數(shù)作用如下:

1、計(jì)算字符串中有效的表達(dá)式,并返回結(jié)果。

2、將字符串轉(zhuǎn)成相應(yīng)的對(duì)象(如list、tuple、dict和string之間的轉(zhuǎn)換)。

3、將利用反引號(hào)轉(zhuǎn)換的字符串再反轉(zhuǎn)回對(duì)象。

函數(shù)作用域:eval()函數(shù)并不會(huì)創(chuàng)建一個(gè)新的作用域,并且它的作用域就是它所在的作用域,有時(shí)候需要將eval()函數(shù)的作用域設(shè)置為全局,當(dāng)然可以將eval()在全局作用域中使用,這個(gè)時(shí)候可以用window.eval()的方式實(shí)現(xiàn)。

參數(shù)情況:

(1)如果參數(shù)是一個(gè)表達(dá)式,eval() 函數(shù)將執(zhí)行表達(dá)式。

(2)如果參數(shù)是Javascript語(yǔ)句,eval()將執(zhí)行 Javascript 語(yǔ)句。

注意:如果執(zhí)行結(jié)果是一個(gè)值就返回,不是就返回undefined,如果參數(shù)不是一個(gè)字符串,則直接返回該參數(shù)。

Python的函數(shù)都有哪些

【常見的內(nèi)置函數(shù)】

1、enumerate(iterable,start=0)

是python的內(nèi)置函數(shù),是枚舉、列舉的意思,對(duì)于一個(gè)可迭代的(iterable)/可遍歷的對(duì)象(如列表、字符串),enumerate將其組成一個(gè)索引序列,利用它可以同時(shí)獲得索引和值。

2、zip(*iterables,strict=False)

用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用*號(hào)操作符,可以將元組解壓為列表。

3、filter(function,iterable)

filter是將一個(gè)序列進(jìn)行過濾,返回迭代器的對(duì)象,去除不滿足條件的序列。

4、isinstance(object,classinfo)

是用來判斷某一個(gè)變量或者是對(duì)象是不是屬于某種類型的一個(gè)函數(shù),如果參數(shù)object是classinfo的實(shí)例,或者object是classinfo類的子類的一個(gè)實(shí)例,

返回True。如果object不是一個(gè)給定類型的的對(duì)象, 則返回結(jié)果總是False

5、eval(expression[,globals[,locals]])

用來將字符串str當(dāng)成有效的表達(dá)式來求值并返回計(jì)算結(jié)果,表達(dá)式解析參數(shù)expression并作為Python表達(dá)式進(jìn)行求值(從技術(shù)上說是一個(gè)條件列表),采用globals和locals字典作為全局和局部命名空間。

【常用的句式】

1、format字符串格式化

format把字符串當(dāng)成一個(gè)模板,通過傳入的參數(shù)進(jìn)行格式化,非常實(shí)用且強(qiáng)大。

2、連接字符串

常使用+連接兩個(gè)字符串。

3、if...else條件語(yǔ)句

Python條件語(yǔ)句是通過一條或多條語(yǔ)句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語(yǔ)句用來執(zhí)行需要判斷的情形。

4、for...in、while循環(huán)語(yǔ)句

循環(huán)語(yǔ)句就是遍歷一個(gè)序列,循環(huán)去執(zhí)行某個(gè)操作,Python中的循環(huán)語(yǔ)句有for和while。

5、import導(dǎo)入其他腳本的功能

有時(shí)需要使用另一個(gè)python文件中的腳本,這其實(shí)很簡(jiǎn)單,就像使用import關(guān)鍵字導(dǎo)入任何模塊一樣。

Python - pytest

目錄

pytest是Python的單元測(cè)試框架,同自帶的unittest框架類似,但pytest框架使用起來更簡(jiǎn)潔,效率更高。

pytest特點(diǎn)

安裝

測(cè)試

在測(cè)試之前要做的準(zhǔn)備

我的演示腳本處于這樣一個(gè)的目錄中:

踩坑:你創(chuàng)建的pytest腳本名稱中不允許含有 . ,比如 1.簡(jiǎn)單上手.py ,這樣會(huì)報(bào)錯(cuò)。當(dāng)然,可以這么寫 1-簡(jiǎn)單上手.py

demo1.py :

上例中,當(dāng)我們?cè)趫?zhí)行(就像Python解釋器執(zhí)行普通的Python腳本一樣)測(cè)試用例的時(shí)候, pytest.main(["-s", "demo1.py"]) 中的傳參需要是一個(gè)元組或者列表(我的pytest是5.2.2版本),之前的版本可能需要這么調(diào)用 pytest.main("-s demo1.py") ,傳的參數(shù)是str的形式,至于你使用哪種,取決于報(bào)不報(bào)錯(cuò):

遇到上述報(bào)錯(cuò),就是參數(shù)需要一個(gè)列表或者元組的形式,而我們使用的是str形式。

上述代碼正確的執(zhí)行結(jié)果是這樣的:

大致的信息就是告訴我們:

pytest.main(["-s", "demo1.py"])參數(shù)說明

除了上述的函數(shù)這種寫法,也可以有用例類的寫法:

用法跟unittest差不多,類名要以 Test 開頭,并且其中的用例方法也要以 test 開頭,然后執(zhí)行也一樣。

執(zhí)行結(jié)果:

那么,你這個(gè)時(shí)候可能會(huì)問,我記得unittest中有setup和teardown的方法,難道pytest中沒有嘛?你怎么提都不提?穩(wěn)住,答案是有的。

接下來,我們來研究一下pytest中的setup和teardown的用法。

我們知道,在unittest中,setup和teardown可以在每個(gè)用例前后執(zhí)行,也可以在所有的用例集執(zhí)行前后執(zhí)行。那么在pytest中,有以下幾種情況:

來一一看看各自的用法。

模塊級(jí)別setup_module/teardown_module

執(zhí)行結(jié)果:

類級(jí)別的setup_class/teardown_class

執(zhí)行結(jié)果:

類中方法級(jí)別的setup_method/teardown_method

執(zhí)行結(jié)果:

函數(shù)級(jí)別的setup_function/teardown_function

執(zhí)行結(jié)果:

小結(jié)

該腳本有多種運(yùn)行方式,如果處于PyCharm環(huán)境,可以使用右鍵或者點(diǎn)擊運(yùn)行按鈕運(yùn)行,也就是在pytest中的主函數(shù)中運(yùn)行:

也可以在命令行中運(yùn)行:

這種方式,跟使用Python解釋器執(zhí)行Python腳本沒有什么兩樣。也可以如下面這么執(zhí)行:

當(dāng)然,還有一種是使用配置文件運(yùn)行,來看看怎么用。

在項(xiàng)目的根目錄下,我們可以建立一個(gè) pytest.ini 文件,在這個(gè)文件中,我們可以實(shí)現(xiàn)相關(guān)的配置:

那這個(gè)配置文件中的各項(xiàng)都是什么意思呢?

首先, pytest.ini 文件必須位于項(xiàng)目的根目錄,而且也必須叫做 pytest.ini 。

其他的參數(shù):

OK,來個(gè)示例。

首先,(詳細(xì)目錄參考開頭的目錄結(jié)構(gòu))在 scripts/test_case_01.py 中:

在 scripts/test_case_dir1/test_case02.py 中:

那么,在不同的目錄或者文件中,共有5個(gè)用例將被執(zhí)行,而結(jié)果則是兩個(gè)失敗三個(gè)成功。來執(zhí)行驗(yàn)證一下,因?yàn)橛辛伺渲梦募覀冊(cè)诮K端中(前提是在項(xiàng)目的根目錄),直接輸入 pytest 即可。

由執(zhí)行結(jié)果可以發(fā)現(xiàn), 2 failed, 3 passed ,跟我們的預(yù)期一致。

后續(xù)執(zhí)行相關(guān)配置都來自配置文件,如果更改,會(huì)有相應(yīng)說明,終端都是直接使用 pytest 執(zhí)行。

我們知道在unittest中,跳過用例可以用 skip ,那么這同樣是適用于pytest。

來看怎么使用:

跳過用例,我們使用 @pytest.mark.skipif(condition, reason) :

然后將它裝飾在需要被跳過用例的的函數(shù)上面。

效果如下:

上例執(zhí)行結(jié)果相對(duì)詳細(xì),因?yàn)槲覀冊(cè)谂渲梦募袨? addopts 增加了 -v ,之前的示例結(jié)果中,沒有加!

另外,此時(shí),在輸出的控制臺(tái)中, 還無法打印出 reason 信息,如果需要打印,則可以在配置文件中的 addopts 參數(shù)的 -s 變?yōu)?-rs :

如果我們事先知道測(cè)試函數(shù)會(huì)執(zhí)行失敗,但又不想直接跳過,而是希望顯示的提示。

Pytest 使用 pytest.mark.xfail 實(shí)現(xiàn)預(yù)見錯(cuò)誤功能::

需要掌握的必傳參數(shù)的是:

那么關(guān)于預(yù)期失敗的幾種情況需要了解一下:

結(jié)果如下:

pytest 使用 x 表示預(yù)見的失敗(XFAIL)。

如果預(yù)見的是失敗,但實(shí)際運(yùn)行測(cè)試卻成功通過,pytest 使用 X 進(jìn)行標(biāo)記(XPASS)。

而在預(yù)期失敗的兩種情況中,我們不希望出現(xiàn)預(yù)期失敗,結(jié)果卻執(zhí)行成功了的情況出現(xiàn),因?yàn)楦覀兿氲牟灰粯勇?,我預(yù)期這條用例失敗,那這條用例就應(yīng)該執(zhí)行失敗才對(duì),你雖然執(zhí)行成功了,但跟我想的不一樣,你照樣是失敗的!

所以,我們需要將預(yù)期失敗,結(jié)果卻執(zhí)行成功了的用例標(biāo)記為執(zhí)行失敗,可以在 pytest.ini 文件中,加入:

這樣就就把上述的情況標(biāo)記為執(zhí)行失敗了。

pytest身為強(qiáng)大的單元測(cè)試框架,那么同樣支持DDT數(shù)據(jù)驅(qū)動(dòng)測(cè)試的概念。也就是當(dāng)對(duì)一個(gè)測(cè)試函數(shù)進(jìn)行測(cè)試時(shí),通常會(huì)給函數(shù)傳遞多組參數(shù)。比如測(cè)試賬號(hào)登陸,我們需要模擬各種千奇百怪的賬號(hào)密碼。

當(dāng)然,我們可以把這些參數(shù)寫在測(cè)試函數(shù)內(nèi)部進(jìn)行遍歷。不過雖然參數(shù)眾多,但仍然是一個(gè)測(cè)試,當(dāng)某組參數(shù)導(dǎo)致斷言失敗,測(cè)試也就終止了。

通過異常捕獲,我們可以保證程所有參數(shù)完整執(zhí)行,但要分析測(cè)試結(jié)果就需要做不少額外的工作。

在 pytest 中,我們有更好的解決方法,就是參數(shù)化測(cè)試,即每組參數(shù)都獨(dú)立執(zhí)行一次測(cè)試。使用的工具就是 pytest.mark.parametrize(argnames, argvalues) 。

使用就是以裝飾器的形式使用。

只有一個(gè)參數(shù)的測(cè)試用例

來看(重要部分)結(jié)果::

可以看到,列表內(nèi)的每個(gè)手機(jī)號(hào),都是一條測(cè)試用例。

多個(gè)參數(shù)的測(cè)試用例

(重要部分)結(jié)果:

可以看到,每一個(gè)手機(jī)號(hào)與每一個(gè)驗(yàn)證碼都組合一起執(zhí)行了,這樣就執(zhí)行了4次。那么如果有很多個(gè)組合的話,用例數(shù)將會(huì)更多。我們希望手機(jī)號(hào)與驗(yàn)證碼一一對(duì)應(yīng)組合,也就是只執(zhí)行兩次,怎么搞呢?

在多參數(shù)情況下,多個(gè)參數(shù)名是以 , 分割的字符串。參數(shù)值是列表嵌套的形式組成的。

固件(Fixture)是一些函數(shù),pytest 會(huì)在執(zhí)行測(cè)試函數(shù)之前(或之后)加載運(yùn)行它們,也稱測(cè)試夾具。

我們可以利用固件做任何事情,其中最常見的可能就是數(shù)據(jù)庫(kù)的初始連接和最后關(guān)閉操作。

Pytest 使用 pytest.fixture() 定義固件,下面是最簡(jiǎn)單的固件,訪問主頁(yè)前必須先登錄:

結(jié)果:

在之前的示例中,你可能會(huì)覺得,這跟之前的setup和teardown的功能也類似呀,但是,fixture相對(duì)于setup和teardown來說更靈活。pytest通過 scope 參數(shù)來控制固件的使用范圍,也就是作用域。

比如之前的login固件,可以指定它的作用域:

很多時(shí)候需要在測(cè)試前進(jìn)行預(yù)處理(如新建數(shù)據(jù)庫(kù)連接),并在測(cè)試完成進(jìn)行清理(關(guān)閉數(shù)據(jù)庫(kù)連接)。

當(dāng)有大量重復(fù)的這類操作,最佳實(shí)踐是使用固件來自動(dòng)化所有預(yù)處理和后處理。

Pytest 使用 yield 關(guān)鍵詞將固件分為兩部分, yield 之前的代碼屬于預(yù)處理,會(huì)在測(cè)試前執(zhí)行; yield 之后的代碼屬于后處理,將在測(cè)試完成后執(zhí)行。

以下測(cè)試模擬數(shù)據(jù)庫(kù)查詢,使用固件來模擬數(shù)據(jù)庫(kù)的連接關(guān)閉:

結(jié)果:

可以看到在兩個(gè)測(cè)試用例執(zhí)行前后都有預(yù)處理和后處理。

pytest中還有非常多的插件供我們使用,我們來介紹幾個(gè)常用的。

先來看一個(gè)重要的,那就是生成測(cè)試用例報(bào)告。

想要生成測(cè)試報(bào)告,首先要有下載,才能使用。

下載

如果下載失敗,可以使用PyCharm下載,怎么用PyCharm下載這里無需多言了吧。

使用

在配置文件中,添加參數(shù):

效果很不錯(cuò)吧!

沒完,看我大招

Allure框架是一個(gè)靈活的輕量級(jí)多語(yǔ)言測(cè)試報(bào)告工具,它不僅以web的方式展示了簡(jiǎn)潔的測(cè)試結(jié)果,而且允許參與開發(fā)過程的每個(gè)人從日常執(zhí)行的測(cè)試中最大限度的提取有用信息。

從開發(fā)人員(dev,developer)和質(zhì)量保證人員(QA,Quality Assurance)的角度來看,Allure報(bào)告簡(jiǎn)化了常見缺陷的統(tǒng)計(jì):失敗的測(cè)試可以分為bug和被中斷的測(cè)試,還可以配置日志、步驟、fixture、附件、計(jì)時(shí)、執(zhí)行 歷史 以及與TMS和BUG管理系統(tǒng)集成,所以,通過以上配置,所有負(fù)責(zé)的開發(fā)人員和測(cè)試人員可以盡可能的掌握測(cè)試信息。

從管理者的角度來看,Allure提供了一個(gè)清晰的“大圖”,其中包括已覆蓋的特性、缺陷聚集的位置、執(zhí)行時(shí)間軸的外觀以及許多其他方便的事情。allure的模塊化和可擴(kuò)展性保證了我們總是能夠?qū)δ承〇|西進(jìn)行微調(diào)。

少扯點(diǎn),來看看怎么使用。

Python的pytest中allure下載

但由于這個(gè) allure-pytest 插件生成的測(cè)試報(bào)告不是 html 類型的,我們還需要使用allure工具再“加工”一下。所以說,我們還需要下載這個(gè)allure工具。

allure工具下載

在現(xiàn)在allure工具之前,它依賴Java環(huán)境,我們還需要先配置Java環(huán)境。

注意,如果你的電腦已經(jīng)有了Java環(huán)境,就無需重新配置了。

配置完了Java環(huán)境,我們?cè)賮硐螺dallure工具,我這里直接給出了百度云盤鏈接,你也可以去其他鏈接中自行下載:

下載并解壓好了allure工具包之后,還需要將allure包內(nèi)的 bin 目錄添加到系統(tǒng)的環(huán)境變量中。

完事后打開你的終端測(cè)試:

返回了版本號(hào)說明安裝成功。

使用

一般使用allure要經(jīng)歷幾個(gè)步驟:

來看配置 pytest.ini :

就是 --alluredir ./report/result 參數(shù)。

在終端中輸入 pytest 正常執(zhí)行測(cè)試用例即可:

執(zhí)行完畢后,在項(xiàng)目的根目下,會(huì)自動(dòng)生成一個(gè) report 目錄,這個(gè)目錄下有:

接下來需要使用allure工具來生成HTML報(bào)告。

此時(shí)我們?cè)诮K端(如果是windows平臺(tái),就是cmd),路徑是項(xiàng)目的根目錄,執(zhí)行下面的命令。

PS:我在pycharm中的terminal輸入allure提示'allure' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。但windows的終端沒有問題。

命令的意思是,根據(jù) reportresult 目錄中的數(shù)據(jù)(這些數(shù)據(jù)是運(yùn)行pytest后產(chǎn)生的)。在 report 目錄下新建一個(gè) allure_html 目錄,而這個(gè)目錄內(nèi)有 index.html 才是最終的allure版本的HTML報(bào)告;如果你是重復(fù)執(zhí)行的話,使用 --clean 清除之前的報(bào)告。

結(jié)果很漂亮:

allure open

默認(rèn)的,allure報(bào)告需要HTTP服務(wù)器來打開,一般我們可以通過pycharm來完成,另外一種情況就是通過allure自帶的open命令來完成。

allure的其他用法

當(dāng)然,故事還是沒有完!在使用allure生成報(bào)告的時(shí)候,在編寫用例階段,還可以有一些參數(shù)可以使用:

allure.title與allure.description

feature和story

由上圖可以看到,不同的用例被分為不同的功能中。

allure.severity

allure.severity 用來標(biāo)識(shí)測(cè)試用例或者測(cè)試類的級(jí)別,分為blocker,critical,normal,minor,trivial5個(gè)級(jí)別。

severity的默認(rèn)級(jí)別是normal,所以上面的用例5可以不添加裝飾器了。

allure.dynamic

在之前,用例的執(zhí)行順序是從上到下依次執(zhí)行:

正如上例的執(zhí)行順序是 3 1 2 。

現(xiàn)在,來看看我們?nèi)绾问謩?dòng)控制多個(gè)用例的執(zhí)行順序,這里也依賴一個(gè)插件。

下載

使用

手動(dòng)控制用例執(zhí)行順序的方法是在給各用例添加一個(gè)裝飾器:

那么, 現(xiàn)在的執(zhí)行順序是 2 1 3 ,按照order指定的排序執(zhí)行的。

如果有人較勁傳個(gè)0或者負(fù)數(shù)啥的,那么它們的排序關(guān)系應(yīng)該是這樣的:

失敗重試意思是指定某個(gè)用例執(zhí)行失敗可以重新運(yùn)行。

下載

使用

需要在 pytest.ini 文件中, 配置:

給 addopts 字段新增(其他原有保持不變) --reruns=3 字段,這樣如果有用例執(zhí)行失敗,則再次執(zhí)行,嘗試3次。

來看示例:

結(jié)果:

我們也可以從用例報(bào)告中看出重試的結(jié)果:

上面演示了用例失敗了,然后重新執(zhí)行多少次都沒有成功,這是一種情況。

接下來,來看另一種情況,那就是用例執(zhí)行失敗,重新執(zhí)行次數(shù)內(nèi)通過了,那么剩余的重新執(zhí)行的次數(shù)將不再執(zhí)行。

通過 random 模塊幫助我們演示出在某次執(zhí)行中出現(xiàn)失敗的情況,而在重新執(zhí)行的時(shí)候,會(huì)出現(xiàn)成功的情況,看結(jié)果:

可以看到,用例 02 重新執(zhí)行了一次就成功了,剩余的兩次執(zhí)行就終止了。

一條一條用例的執(zhí)行,肯定會(huì)很慢,來看如何并發(fā)的執(zhí)行測(cè)試用例,當(dāng)然這需要相應(yīng)的插件。

下載

使用

在配置文件中添加:

就是這個(gè) -n=auto :

并發(fā)的配置可以寫在配置文件中,然后其他正常的執(zhí)行用例腳本即可。另外一種就是在終端中指定,先來看示例:

結(jié)果:

pytest-sugar 改變了 pytest 的默認(rèn)外觀,添加了一個(gè)進(jìn)度條,并立即顯示失敗的測(cè)試。它不需要配置,只需 下載插件即可,用 pytest 運(yùn)行測(cè)試,來享受更漂亮、更有用的輸出。

下載

其他照舊執(zhí)行用例即可。

pytest-cov 在 pytest 中增加了覆蓋率支持,來顯示哪些代碼行已經(jīng)測(cè)試過,哪些還沒有。它還將包括項(xiàng)目的測(cè)試覆蓋率。

下載

使用

在配置文件中:

也就是配置 --cov=./scripts ,這樣,它就會(huì)統(tǒng)計(jì)所有 scripts 目錄下所有符合規(guī)則的腳本的測(cè)試覆蓋率。

執(zhí)行的話,就照常執(zhí)行就行。

結(jié)果:

更多插件參考:

有的時(shí)候,在 pytest.ini 中配置了 pytest-html 和 allure 插件之后,執(zhí)行后報(bào)錯(cuò):

出現(xiàn)了這個(gè)報(bào)錯(cuò),檢查你配置的解釋器中是否存在 pytest-html 和 allure-pytest 這兩個(gè)模塊。如果是使用的pycharm ide,那么你除了檢查settings中的解釋器配置之外,還需要保證運(yùn)行腳本的編輯器配置是否跟settings中配置一致。

python冒泡排序的測(cè)試函數(shù),給個(gè)例子,謝謝

def?bubbleSort(myList):

#?首先獲取list的總長(zhǎng)度,為之后的循環(huán)比較作準(zhǔn)備

length?=?len(myList)

#?一共進(jìn)行幾輪列表比較,一共是(length-1)輪

for?i?in?range(0,?length?-?1):

#?每一輪的比較,注意range的變化,這里需要進(jìn)行l(wèi)ength-1-長(zhǎng)的比較,注意-i的意義(可以減少比較已經(jīng)排好序的元素)

for?j?in?range(0,?length?-?1?-?i):

#?交換

if?myList[j]??myList[j?+?1]:

tmp?=?myList[j]

myList[j]?=?myList[j?+?1]

myList[j?+?1]?=?tmp

#?打印每一輪交換后的列表

for?item?in?myList:

print(item)

print("=============================")

print("Bubble?Sort:?")

myList?=?[2,0,1,8,0,3,0,2]

bubbleSort(myList)

當(dāng)前標(biāo)題:python基準(zhǔn)測(cè)試函數(shù)的簡(jiǎn)單介紹
網(wǎng)頁(yè)鏈接:http://muchs.cn/article8/hgioop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、服務(wù)器托管、建站公司虛擬主機(jī)、搜索引擎優(yōu)化、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司