目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
测试用例参数化
Pytest中装饰器@pytest.mark.parametrize(‘参数名’,list)可以实现测试用例参数化
如何使用?
第一个参数是字符串,多个参数中间用逗号隔开;
第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应;
传一个参数 @pytest.mark.parametrize(‘参数名’,list) 进行参数化;
传两个参数@pytest.mark.parametrize(‘参数名1,参数名2’,[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化
参数2_data[1])]) 进行参数化;
1、单参数数据驱动-1个参数1个值
示例代码:test_pytest.py
import pytest
# 一个参数一个值
@pytest.mark.parametrize("number", [0,1])
def test_case1(number):
assert number==1
if __name__ == '__main__':
pytest.main(["-s", "-v", "-k","test_pytest.py"])
2、多参数数据驱动-多参数多个值
示例代码:
import pytest
import time
@pytest.mark.baidu
class TestBaidu :
def setup_method(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.base_url = "http://www.baidu.com/"
@pytest.mark.parametrize('search_string,expect_string',[('iTesting','iTesting'),('helloqa.com','iTesting')])
def test_baidu_search(self,search_string,expect_string):
driver = self.driver
driver.get(self.base_url + './')
driver.find_element_by_id("kw").send_keys(search_string)
driver.find_element_by_id("su").click()
time.sleep(2)
search_results=driver.find_element_by_xpath('//*[@id="1"]/h3/a').get_attribute('innerHTML')
assert (expect_string in search_results) is True
def teardown_method(self):
self.driver.quit()
if __name__ == '__main__':
pytest.main(["-m","baidu","-s", "-v", "-k","test_baidu.py"])
3、多个参数的混合使用
有点类似笛卡尔积的意思,示例代码如下:
import pytest
data1 = [1, 2]
data2 = ["AA", "123"]
data3 = ["A", "B", "C", "D", "E","F",'G']
@pytest.mark.parametrize("a", data1)
@pytest.mark.parametrize("b", data2)
@pytest.mark.parametrize("c", data3)
def test_case3(a, b, c):
print(f"生成新的数据组合为:[{a} {b} {c}]")
if __name__ == '__main__':
pytest.main(["-s", "-v", "-k","test_pytest.py"])
忽略测试用例and失败测试用例重试
1、忽略测试文件
使用–ignore参数忽略测试文件
目录结构:
命令行命令参考:
python -m pytest --ignore=baiduTest/tests/test_start.py
2、忽略测试方法
@pytest.mark.skip
@pytest.mark.skipif 通过条件判断忽悠测试方法
test_skip.py文件
import pytest
def test_case01():
print("我是测试用例1")
@pytest.mark.skip(reason="不执行该用例!!因为没写好!!")
def test_case02():
print("我是测试用例2")
flag=1
@pytest.mark.skipif(flag==1,reason="按条件忽略测试文件")
def test_case03():
print("我是测试用例3")
if __name__ == '__main__':
pytest.main(['-s', '-v', "-q",'test_skip.py'])
3、失败用例重试
安装插件pytest-rerunfailures
pip install pytest-rerunfailures
代码示例:
import pytest
@pytest.mark.smoke
class TestSample():
def test_qual(self):
#通过断言模拟测试用例失败,
assert 1==0
def test_not_equal(self):
assert 1!=0
if __name__ == '__main__':
pytest.main(['-s', '-v', "-q",'test_demo.py'])
命令行输入:
pytest baiduTest/tests/test_demo.py --reruns 2 #失败重试2次
观察命令行面板输出:
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只有拼尽全力,才能看到生命的辉煌;只有不屈不挠,才能达到梦想的彼岸;只有坚持不懈,才能迎接成功的喜悦。奋斗吧,勇敢的追逐自己心中的光芒!
每一次拼搏都是奋斗的印记,每一天坚持都是成功的铺垫,只要心中有梦想,努力就会变成最美丽的风景,坚持不懈,我们终将达到辉煌的巅峰!
只有不屈的意志,才能破茧成蝶;只有坚定的信念,才能驱散黑暗。在困难面前不气馁,勇往直前,才能实现人生的辉煌与壮丽!奋斗吧,你就是那个改变世界的人!