先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
required_plugins: 必须存在才能运行pytest的插件的空格分隔列表。插件可以直接在其名称后面列出,
也可以不带版本说明符。不同版本说明符之间不允许有空格。如果没有找到任何一个插件,发出一个错误
[pytest]
required_plugins = pytest-django>=3.0.0,<4.0.0 pytest-html pytest-xdist>=1.0.0
usefixtures: 将应用于所有测试函数的设备列表;这在语义上与应用@pytest.mark.usefixtures 标记所有测试功能
[pytest]
usefixtures = clean_db
testpaths: 当所有项目测试都在一个已知的位置时很有用,以加速测试收集并避免意外地获取不需要的测试
[pytest]
testpaths = testing doc
addopts: 添加指定的 OPTS
命令行参数集,就好像它们是由用户指定的一样
[pytest]
addopts = --maxfail=2 -rf # exit after 2 failures, report fail info
pytest运行参数
-s: 打印信息
-v: 详细信息
-k: 运行指定包含某个字符串的测试函数
pytest.main([“-k”,“hello”]) -> 执行测试函数名中带有hello字符串的用例 (同样也可以指定类名,会执行类中所有测试方法)
pytest.main([“-k”,“类名 and not 方法名”])
-q: 简化输出
-x: 只要出现一条失败的用例都会退出
–maxfail: 用例失败个数达到阀值停止运行
pytest.main([“–maxfail=2”]) -> 超过2条运行失败,后续用例就会停止运行
-m: 指定带有标识的用例
pytest.main([“-m”,“smoke”]) -> 执行有 @pytest.mark.smoke 这个标记的测试用例
–durations: 查看最慢的n个用例
pytest.main([“–durations=10”]) 查看最慢10个用例
-p no:doctest 关闭插件,比如关闭doctest
pytest断言
语法:assert expression, errorMsg
assert a % 2 == 0, “value was odd, should be even”
预期异常的断言 pytest.raise() 递归超时
pytest参数化
1、@pytest.mark.parametrize(" 变量名… ", 数据)
2、metafunc.parametrize()
1 def pytest_generate_tests(metafunc):
2 idlist = []
3 argvalues = []
4 # metafunc.cls就是Test_Case类
5 for scenario in metafunc.cls.scenarios:
6 idlist.append(scenario[0])
7 items = scenario[1].items()
8 argnames = [x[0] for x in items] #
9 argvalues.append([x[1] for x in items])
10 # 给metafunc也就是Test_Case类下的方法全部带上这个parametrize
11 metafunc.parametrize(argnames, argvalues, ids=idlist, scope=“class”)
12
13
14 scenario1 = (“basic”, {“attribute”: “value”})
15 scenario2 = (“advanced”, {“attribute”: “value2”})
16
17
18 class Test_Case:
19 scenarios = [scenario1, scenario2]
20
21 def test_demo1(self, attribute):
22 assert isinstance(attribute, str)
23
24 def test_demo2(self, attribute):
25 assert isinstance(attribute, str)
3、@pytest.mark.parametrize(" 方法名", 数据, indirect=True) 将数据先传递给“方法名”对应的夹具函数进行处理,并且夹具函数接收一个参数request
1 @pytest.fixture
2 def fixt(request): # 这里需要带有参数request,request.param可以拿到[“a”, “b”]
3 return request.param * 3
4
5 @pytest.mark.parametrize(“fixt”, [“a”, “b”], indirect=True) #indirect=True,会将数据[“a”, “b”]传递给fixt函数进行处理
6 def test_indirect(fixt):
7 assert len(fixt) == 3
pytest 生成测试报告
allure报告
1、安装jdk1.8才可以运行
2、解压Allure压缩包
3、配置Allure到环境变量 将allure下的bin配置到环境变量path中
生成allure报告: allure generate ./result/ -o ./report/ --clean
pytest.main([“–alluredir”, “./result”])
pytest traceback输出 作为了解即可 就是显示报错信息的详细程度不同
pytest --showlocals
pytest -l
pytest --tb=auto 默认这种
pytest --tb==line …
pytest pdb调试模式
pytest --pdb # 每次遇到失败都会进到调试 pdb
pytest -x --pdb # 第一次遇到失败进入pdb,结束测试执行
pytest --pdb --maxfail=3 # 只有钱三次失败跳转到pdb
进入pdb 交互调试常用命令
1、p : 输出变量expr的值
2、l : 列出错误,显示出错的代码
3、a : 打印当前函数的所有参数和变量
4、u : 移动到堆栈的上一层
5、d: 移动到堆栈的下一层
6、q : 退出pdb
pytest fixture夹具
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
st fixture夹具**
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-ViIyehbz-1713437907730)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!