当前位置:网站首页>Pytest's collection use case rules and running specified use cases
Pytest's collection use case rules and running specified use cases
2022-07-06 09:00:00 【Automated test seventh uncle】
Preface
Hello, guys , Today I will explain it to you pytest How to collect the use cases we have written ? How can we run individual use cases or batch use cases ? Now I'll answer for you one by one !

One 、Pytest Collect use case principles
First of all, we will create our project according to the following directory structure
[pyttest Rules for searching test cases ]
|[ Test case catalog 1]
| |__init__.py
| |test_ Test module 1.py
| |test_ Test module 2.py
|[ Test case catalog 2]
| |__init__.py
| |test_ The test case 1.py
| | The test case .py
|test_ Test module .py
| The test case 2.py Two 、 Code instance
# test_ Test module 1.py
def test_testFunc1():
print('\n I'm a test case ! in test_testFunc1')
assert 1 == 1
def func1():
print(' I'm not a test case ')
assert 1 == 1# test_ Test module 2.py
class TestClass1(object):
def test_class_func1(self):
print('\n I'm a test case in a class in test_class_func1')
assert 1 == 1
def class_func1(self):
print(' I'm a normal function in a class !')# test_ The test case 1.py
class TestClass2(object):
def test_class_func2(self):
print('\n I'm a test case in a class in test_class_func2',)
assert 1 == 1
def class_func2(self):
print(' I'm a normal function in a class !')
def test_testFunc2():
print('\n I'm a test case in test_testFunc2!')
assert 1 == 1
def func2():
print(' I'm not a test case ')
assert 1 == 1# The test case .py
def test_testFunc3():
print('\n I'm a test case ! in The test case .py')
assert 1 == 1
def func3():
print(' I'm not a test case ')
assert 1 == 1# test_ Test module 3.py
def test_testFunc4():
print('\n I'm a test case ! in test_testFunc4')
assert 1 == 1
def func4():
print(' I'm not a test case ')
assert 1 == 1
class TestClass3(object):
def test_class_func3(self):
print('\n I'm a test case in a class in test_class_func3')
assert 1 == 1
def class_func3(self):
print(' I'm a normal function in a class !')# The test case 2.py
def test_testFunc5():
print('\n I'm a test case ! in test_testFunc5')
assert 1 == 1
def func5():
print(' I'm not a test case ')
assert 1 == 1Let's use cmd Command to execute this project , See how many use cases are valid ? open cmd Switch to the root of the project to execute the command pytest -v
D:\pytest Search test case rules >pytest -v
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 6 items
test_ Test module 3.py::test_testFunc4 PASSED [ 16%]
test_ Test module 3.py::TestClass3::test_class_func3 PASSED [ 33%]
Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED [ 50%]
Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED [ 66%]
Test case catalog 2/test_ The test case 1.py::TestClass2::test_class_func2 PASSED [ 83%]
Test case catalog 2/test_ The test case 1.py::test_testFunc2 PASSED [100%]
========================== 6 passed in 0.59 seconds ===========================
The running result shows that there are 6 Use cases passed, And a detailed list of which 6 strip , So the use cases we wrote above are not just 6 strip , So why only run 6 Striped cloth ? Combining the above code structure with our execution results , We should be able to find such laws
Pytest Will start from the directory we are currently running to find all directories , Looking to test_ The beginning of the file and all of the files with test_ The functions that start with and start with Test Classes and classes that start with test_ The first function is the test case . That's why it only works 6 Test cases !
3、 ... and 、Pytest Run the specified test case
We still use the above project as a demonstration (cdm Switch to the root of the project )
3.1 Run all use cases in the specified directory
We specify the run test case Directory 1 All the use cases in it (pytest -v Test case catalog 1)
D:\pytest Search test case rules >pytest -v Test case catalog 1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 2 items
Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED [ 50%]
Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED [100%]
========================== 2 passed in 0.05 seconds ===========================
# This will only search and specify all the uses under the specified directory 3.2 Run all use cases in the specified file
We specify the run test_ Test module 1.py(pytest -v Test case catalog 1/test_ Test module 1.py )
D:\pytest Search test case rules >pytest -v Test case catalog 1/test_ Test module 1.py
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item
Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED [100%]
========================== 1 passed in 0.09 seconds ===========================
# Run all use cases under the specified file 3.3 Run the test class in the specified file
We specify the run test_ Test module 2.py Test class in Testclass1(pytest -v Test case catalog 1/test_ Test module 2.py::TestClass1)
D:\pytest Search test case rules >pytest -v Test case catalog 1/test_ Test module 2.py::TestClass1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item
Test case catalog 1/test_ Test module 2.py::TestClass1::test_class_func1 PASSED [100%]
========================== 1 passed in 0.05 seconds ===========================
# Run all tests in the specified test class with 3.4 Run the specified test case function
We specify the run test_testFunc1(pytest -v Test case catalog 1/test_ Test module 1.py::test_testFunc1)
D:\pytest Search test case rules >pytest -v Test case catalog 1/test_ Test module 1.py::test_testFunc1
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.4', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.8.0', 'py': '1.6.0', 'pluggy': '0.7.1'}, 'Plugins': {'metadata': '1.8.0', 'html': '1.20.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'C:\\Program Files\\Java\\jdk1.8.0_181'}
rootdir: D:\pytest Search test case rules , inifile:
plugins: metadata-1.8.0, html-1.20.0, allure-adaptor-1.7.10
collected 1 item
Test case catalog 1/test_ Test module 1.py::test_testFunc1 PASSED [100%]
========================== 1 passed in 0.03 seconds ===========================summary
Collect use case rules : Search all to test_ The first test file , With Test The first test class , With test_ The first test function
Execute use case rules : from -v We should be able to find the execution information of the parameter output , Run the use cases in the specified directory Use command pytest Catalog / Catalog that will do ; Run the specified file using pytest Catalog / file that will do ; Run the specified class or function Use command pytest Catalog / file :: Class name :: Function name perhaps pytest Catalog / file :: Function name
Search case rules are also our named case files , Test class , Rules for testing functions ; Execute the specified test case to remember the rules .
Finally, that's all for today's article. My favorite friends can like comments, collect and pay attention , Your support is the motivation of the author .

边栏推荐
- 数字人主播618手语带货,便捷2780万名听障人士
- Leetcode: Sword Finger offer 42. Somme maximale des sous - tableaux consécutifs
- Tdengine biweekly selection of community issues | phase III
- Ijcai2022 collection of papers (continuously updated)
- Advanced Computer Network Review(3)——BBR
- Problems encountered in connecting the database of the project and their solutions
- Guangzhou will promote the construction of a child friendly city, and will explore the establishment of a safe area 200 meters around the school
- [embedded] cortex m4f DSP Library
- 【嵌入式】Cortex M4F DSP库
- LeetCode:124. 二叉树中的最大路径和
猜你喜欢

Alibaba cloud server mining virus solution (practiced)

什么是MySQL?MySql的学习之路是怎样的

I-BERT

The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower

Nacos 的安装与服务的注册

数字人主播618手语带货,便捷2780万名听障人士

Excellent software testers have these abilities

LeetCode41——First Missing Positive——hashing in place & swap

【剑指offer】序列化二叉树

Promise 在uniapp的简单使用
随机推荐
How to effectively conduct automated testing?
pytorch查看张量占用内存大小
不同的数据驱动代码执行相同的测试场景
Intel distiller Toolkit - Quantitative implementation 1
什么是MySQL?MySql的学习之路是怎样的
【嵌入式】使用JLINK RTT打印log
可变长参数
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
LeetCode41——First Missing Positive——hashing in place & swap
R language ggplot2 visualization, custom ggplot2 visualization image legend background color of legend
Variable length parameter
Using pkgbuild:: find in R language_ Rtools check whether rtools is available and use sys The which function checks whether make exists, installs it if not, and binds R and rtools with the writelines
Computer graduation design PHP Zhiduo online learning platform
TDengine 社区问题双周精选 | 第三期
Marathon envs project environment configuration (strengthen learning and imitate reference actions)
Notes 01
使用标签模板解决用户恶意输入的问题
@Jsonbackreference and @jsonmanagedreference (solve infinite recursion caused by bidirectional references in objects)
UML图记忆技巧
[MySQL] multi table query