1. Introdução ao parametrizado
Já escrevemos antes
A biblioteca de terceiros Unittest parametrizada é semelhante ao DDT e [email protected] da Unittest, que pode implementar unidade de dados do usuário parametrizada e evitar escrever vários métodos (redundante)
2. Instalação
instalação pip parametrizada
3. Importar
de importação parametrizada parametrizada, param
4. Exemplos
1. Perceba que a adição de dois parâmetros é igual ao terceiro parâmetro. Podemos ver que os parâmetros são passados em forma de lista. De acordo com a quantidade de parâmetros, são realizados diferentes tempos de iteração.
from parameterized import parameterized,param
import unittest
import requests
class Test(unittest.TestCase):
@parameterized.expand([param(1,2,3),param('he','llo','hello')])
def test(self,test1,test2,test3):
self.assertEqual((test1+test2),test3)
if __name__ == '__main__':
unittest.main()
Testing started at 12:36 ...
"C:\Program Files\Python35\python.exe" "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.4\helpers\pycharm\_jb_unittest_runner.py" --path C:/Users/wangli/PycharmProjects/Test/test/test01.py
Launching unittests with arguments python -m unittest C:/Users/wangli/PycharmProjects/Test/test/test01.py in C:\Users\wangli\PycharmProjects\Test\test
Ran 2 tests in 0.001s
OK
Process finished with exit code 0
2. Podemos implementar a iteração de nossos casos de teste por meio do método acima, montar os parâmetros de solicitação do caso de teste em uma lista e passá-los para @parameterized.expand([parâmetro 1, parâmetro 2, parâmetro 3]) para implementar múltiplas iterações do caso de teste Itere para evitar escrever vários métodos de teste
from parameterized import parameterized,param
import unittest
import requests
class Test(unittest.TestCase):
@parameterized.expand([param('url','headers','data1'),param('url','headers','data2')])
def test(self,url,headers,data):
print(url,headers,data)
r=requests.post(url=url,headers=headers,json=data)
if __name__ == '__main__':
unittest.main()
Testing started at 12:46 ...
"C:\Program Files\Python35\python.exe" "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.4\helpers\pydev\pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 1145 --file "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.4\helpers\pycharm\_jb_unittest_runner.py" --path C:/Users/wangli/PycharmProjects/Test/test/test01.py
pydev debugger: process 24756 is connecting
Connected to pydev debugger (build 182.4505.26)
Launching unittests with arguments python -m unittest C:/Users/wangli/PycharmProjects/Test/test/test01.py in C:\Users\wangli\PycharmProjects\Test\test
Ran 2 tests in 0.004s
OK
url headers data1
url headers data2
Process finished with exit code 0