上一期基于环境的配置做了简单的介绍,针对Pytest灵活的单元测试框架,它的优点就在于内置方法巧妙之处
一、上期重点回顾
** 运行之前需要给大家介绍下pytest框架文件的设计规则,这是pytest的游戏规则请遵守,否则在执行期间pytest找不到不按规则命名的脚本
文件名需以 test_*.py 文件和*_test.py
函数以 test_开头
类以 Test 开头
方法以 test_开头
所有的包 pakege 必项要有__init__.py 文件
今天基于Pytest的执行的main方法参数,拿实际案例进行分享下,测试脚本的执行方法
二、Pytest框架知识点剖析
#用例运行方式分为
1.主函数模式
2.命令行模式
#常用参数详解
-s :表示输出调试信息,包括prin打印的信息
-v :显示更详细的运行信息
-vs:这两个参数可一起使用
-k :匹配相应字符串的测试用例
-x :用例运行失败立即停止
:: :指定测试用例运行
注:还有部分参数未列,这里只介绍-s、-v、:: 几种运行方式
三、案例执行
#单条测试用例场景下看看主函数执行与命令执行的效果
新建项目E:\Python3\JinShan_AutoTest\testcase
新建脚本E:\Python3\JinShan_AutoTest\testcase\test_one_case.py
# -*- coding:utf-8 -*-
# auth:shichao
# Email:695214599@qq.com
class TestLogin:
def test_01_shichao(self):
print('这是第一条测试用例')
if __name__ == '__main__':
pytest.main()
主函数执行模式:
1.不带参数执行pytest.main()
2.带参数执行pytest.main(['-vs'])
命令行执行模式:
1.不带参数执行pytest test_one_case.py
2.带参数执行pytest -vs test_one_case.py
以上为单条测试用例文件以test开头的主函数执行与命令执行的2种方式
#接下来我们看看当我们有多个模块的测试用例想批量执行或者指定某个模块进行执行的场景
新建文件:E:\Python3\JinShan_AutoTest\testcase\test_two_case.py
# -*- coding:utf-8 -*-
# auth:shichao
# Email:695214599@qq.com
import pytest
class TestProduct:
def test_02_shangpin(self):
print('这是第二条测试用例')
if __name__ == '__main__':
pytest.main()
新建文件:E:\Python3\JinShan_AutoTest\testcase\all_test.py
# -*- coding:utf-8 -*-
# auth:shichao
# Email:695214599@qq.com
import pytest
if __name__ == '__main__':
pytest.main(['-vs'])
主函数运行模式
1.不带参数执行所有的测试用例
all_test.py | pytest.main()
2.带参数执行所有的测试用例
all_test.py | pytest.main(['-vs'])
3.带参数执行指定模块测试用例
all_test.py | pytest.main(['-vs','test_two_case.py'])
4.带参数执行跨目录下的文件
all_test.py | pytest.main(['-vs','../zhihu'])
新建目录zhihu:E:\Python3\JinShan_AutoTest\zhihu
zhihu目录下新建文件:E:\Python3\JinShan_AutoTest\zhihu\test_auto_demo.py
# coding:utf-8
# authou: shichao
# pytest试运行
import pytest
from selenium import webdriver
import time
def test_login():
url = "https://www.baidu.com"
driver = webdriver.Chrome()
driver.get(url) # 打开百度浏览器
driver.maximize_window() # 最大化浏览器
driver.find_element_by_id("kw").send_keys("知乎") # 定位输⼊框并输⼊关键字
driver.find_element_by_id("su").click() # 点击[百度⼀下]搜索
time.sleep(3) # 等待3秒
driver.quit() # 关闭浏览器
if __name__ == '__main__':
pytest.main('-vs')
命令行模式运行
1.不带参数执行所有的测试用例
all_test.py | pytest
2.带参数执行所有的测试用例
all_test.py | pytest -vs
3.带参数执行指定模块测试用例
pytest -vs test_two_case.py
4.带参数执行指定目录下测试用例
pytest -vs ../zhihu
以上就是多个模块进行批量、跨层级执行的过程,是不是很灵活
文本就是针对pytest框架测试用例2种执行方式 [ 主函数、命令行模式 ]以及几种正常场景下的常用参数[ -v 、-s ]进行分享