日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python param_Python基于paramunittest模块实现excl参数化

發布時間:2023/12/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python param_Python基于paramunittest模块实现excl参数化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、總結說明

Windows環境安裝:paramunittest cmd輸入命令:pip install paramunittest

總結說明:

1.paramunittest是unittest實現參數化的一個專門的模塊,可以傳入多組參數,自動生成多個用例

2.導入paramunittest:import paramunittest

3.paramunittest支持字典、元組、列表作為入參

列表格式:[["vaule"],["vaule2"]],setParameters賦值的個數與列值一一對應,例如此列表格式列值只有一個,賦值時只能自定義一個值

元組格式:(("pwd","vaule"),("pwd","vaule2")),元組列值必須保證兩個以上,如果只有一個值,setParameters時報錯,setParameters賦值的個數與列值一一對應,例如此元組格式列值有2個,賦值時只能自定義2個值

字典格式:[{"key": "vaule" },{"key": "vaule2"}],字典保證key值一致,如相同個數,相同位置,例如此字典格式列值只有一個key,setParameters賦值時只能定義一個key值

4.賦予列表/字典/元組值:@paramunittest.parametrized(*list/tuple)

5.列表元組賦予列值:def setParameters(self, t1, t2, tN):

'''注意t1, t2, t3名稱自定義,從左到右按順序一一對應值'''

self.t1 = t1

self.t2 = t2

self.tN = tN

6.列表元組取列值def testcase(self): self.t1

7.字典單賦予列值:def setParameters(self, key, keyN):

'''注意key, keyN是與字典key值必須一一對應'''

self.key = key

self.keyN = keyN

8.列表元組取取列def testcase(self): self.key1,字典通過key獲取vaulue值

特別注意:如列值下標大于10時,執行順序是先執行0,1再執行10,11,再執行2,3,.....9

二、源碼舉例(列表)

說明:一般讀取exel會生成一個列表,如果使用exel作為參數化,可以參考此

#!/usr/bin/python3

# encoding:utf-8

import unittest

import paramunittest

import time

list =[

['test', '123456', 'true'],

['test1', '1234564', 'true']

]

@paramunittest.parametrized(*list)

class TestDemo(unittest.TestCase):

def setParameters(self, user, pwd, result):

'''注意user, pwd, result是從左到右按順序一一對應'''

self.user = user

self.pwd = pwd

self.result = result

def testcase(self):

print("開始執行用例:--------------")

time.sleep(1)

print("輸入用戶名:%s" % self.user)

print("輸入密碼:%s" % self.pwd)

print("期望結果:%s " % self.result)

time.sleep(1)

self.assertTrue(self.result == "true")

if __name__ == "__main__":

#verbosity=2 顯示用例執行詳情

unittest.main(verbosity=2)

運行結果

testcase (paramunittest.TestDemo_0) ... 開始執行用例:--------------

輸入用戶名:test

輸入密碼:123456

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_1) ... 輸入用戶名:test1

輸入密碼:1234564

期望結果:true

ok

----------------------------------------------------------------------

Ran 2 tests in 4.003s

OK

三、源碼舉例(字典)

#!/usr/bin/python3

# encoding:utf-8

import unittest

import paramunittest

import time

dict =[

{"user": "test", "pwd": "123456", "result": "true"},

{"user": "test1", "pwd": "1234564", "result": "true"},

{"user": "test2", "pwd": "1234564", "result": "true"},

{"user": "test3", "pwd": "1234564", "result": "true"},

{"user": "test4", "pwd": "1234564", "result": "true"},

{"user": "test5", "pwd": "1234564", "result": "true"},

{"user": "test6", "pwd": "1234564", "result": "true"},

{"user": "test7", "pwd": "1234564", "result": "true"},

{"user": "test8", "pwd": "1234564", "result": "true"},

{"user": "test9", "pwd": "1234564", "result": "true"},

{"user": "test10", "pwd": "1234564", "result": "true"},

{"user": "test11", "pwd": "1234564", "result": "true"}

]

@paramunittest.parametrized(*dict)

class TestDemo(unittest.TestCase):

def setParameters(self, user, pwd, result):

'''user, pwd, result三個參數字典的key一一對應'''

self.user = user

self.pwd = pwd

self.result = result

def testcase(self):

print("開始執行用例:--------------")

time.sleep(1)

print("輸入用戶名:%s" % self.user)

print("輸入密碼:%s" % self.pwd)

print("期望結果:%s " % self.result)

time.sleep(1)

self.assertTrue(self.result == "true")

if __name__ == "__main__":

#verbosity=2 顯示用例執行詳情

unittest.main(verbosity=2)

運行結果

#說明:框架問題:當字典大于10時,執行順序是先執行0,1再執行10,11,再執行#2,3,.....9

testcase (paramunittest.TestDemo_0) ... 開始執行用例:--------------

輸入用戶名:test

輸入密碼:123456

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_1) ... 輸入用戶名:test1

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_10) ... 輸入用戶名:test10

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_11) ... 輸入用戶名:test11

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_2) ... 輸入用戶名:test2

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_3) ... 輸入用戶名:test3

輸入密碼:1234564

期望結果:true

ok開始執行用例:--------------

testcase (paramunittest.TestDemo_4) ... 輸入用戶名:test4

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_5) ... 輸入用戶名:test5

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_6) ... 輸入用戶名:test6

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_7) ... 輸入用戶名:test7

輸入密碼:1234564

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_8) ... 輸入用戶名:test8

輸入密碼:1234564

期望結果:true

ok開始執行用例:--------------

testcase (paramunittest.TestDemo_9) ... 輸入用戶名:test9

輸入密碼:1234564

期望結果:true

ok

----------------------------------------------------------------------

Ran 12 tests in 24.018s

OK

四、源碼舉例(元組)

#!/usr/bin/python3

# encoding:utf-8

import unittest

import paramunittest

import time

tuple=(

("test","123456","true"),

("test1","1234564","true")

)

#另一種賦值方式:直接賦值

#@paramunittest.parametrized(

# ("test","123456","true"),

# ("test1","1234564","true")

#)

@paramunittest.parametrized(*tuple)

class TestDemo(unittest.TestCase):

def setParameters(self, user, pwd, result):

'''注意user, pwd, result是從做到右按順序一一對應'''

self.user = user

self.pwd = pwd

self.result = result

def testcase(self):

print("開始執行用例:--------------")

time.sleep(1)

print("輸入用戶名:%s" % self.user)

print("輸入密碼:%s" % self.pwd)

print("期望結果:%s " % self.result)

time.sleep(1)

self.assertTrue(self.result == "true")

if __name__ == "__main__":

#verbosity=2 顯示用例執行詳情

unittest.main(verbosity=2)

運行結果

testcase (paramunittest.TestDemo_0) ... 開始執行用例:--------------

輸入用戶名:test

輸入密碼:123456

期望結果:true

ok

開始執行用例:--------------

testcase (paramunittest.TestDemo_1) ... 輸入用戶名:test1

輸入密碼:1234564

期望結果:true

ok

----------------------------------------------------------------------

Ran 2 tests in 4.002s

OK

五、問題:

問題描述:一個元組只有一個列值,如("test"),("test1"),setParameters之后運行報錯如下:

testcase (paramunittest.TestDemo_0) ... ERROR

testcase (paramunittest.TestDemo_1) ... ERROR

======================================================================

ERROR: testcase (paramunittest.TestDemo_0)

----------------------------------------------------------------------

Traceback (most recent call last):

File "D:\pythonaz\lib\site-packages\paramunittest.py", line 89, in setUp

self.setParameters(*parameters[0], **parameters[1])

TypeError: setParameters() takes 2 positional arguments but 5 were given

解決方法:保證一個元組列值兩個以上,如("test","123456"),("test1","123")

注:只有元組有這個問題,列表或字典無此問題

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

本文標題: Python基于paramunittest模塊實現excl參數化

本文地址: http://www.cppcns.com/jiaoben/python/310133.html

總結

以上是生活随笔為你收集整理的python param_Python基于paramunittest模块实现excl参数化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。