2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读2.6k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502pytest的标记功能可以用于组织、分类、优先级排序以及自定义扩展等多种场景
组织与分类:
标记可以用于将测试划分为不同的逻辑组。例如,可以创建@pytest.mark.smoke来标识“冒烟测试”,@pytest.mark.integration表示集成测试,或@pytest.mark.ui标识用户界面相关的测试等。
优先级排序:
通过自定义标记如@pytest.mark.priority_high、@pytest.mark.priority_medium和@pytest.mark.priority_low,可以根据业务需求指定测试用例的执行优先级,并在运行时选择性地按照优先级执行。
条件执行:
可以根据环境变量、构建阶段或其他条件决定是否运行带有特定标记的测试。例如,仅在生产环境中运行@pytest.mark.production标记的测试。
资源管理:
标记可用于标识需要特殊资源(如数据库连接、网络访问权限等)的测试,然后编写插件或者钩子函数来确保在执行这些测试之前准备好所需的资源。
并行测试:
结合pytest-xdist插件,可以使用标记控制哪些测试可以在多个CPU核心或远程节点上并行执行,比如排除那些不支持并发的@pytest.mark.serial测试。
报告和度量:
标记可以帮助在生成测试报告时对结果进行细分,例如Allure报告中可以基于标记展示不同类别的测试结果及其统计信息。
自定义扩展:
开发者可以利用pytest的插件机制,根据自定义标记实现特定的行为或策略,如重试失败的测试(pytest-rerunfailures)、分配特定标签的测试到特定的测试集等。
Pytest 是一个 Python 自动化测试框架,它提供了一种标记和分组测试用例的机制,以便于对测试用例进行分类和管理。在 pytest 中,可以使用@pytest.mark装饰器来对测试用例进行标记,然后使用-m参数来选择运行特定标记的测试用例。例如:
● -m "mark1 and mark2":同时选中带有mark1和mark2标记的所有测试用例。
● -m "mark1 and not mark2":选中带有mark1标记的测试用例,过滤掉mark2标记的测试用例。
● -m "mark1 or mark2":选中带有mark1或mark2标记的所有测试用例。
除此之外,还可以使用pytest.ini文件来注册自定义标记,并使用-m参数选择运行特定标记的测试用例。
在pytest.ini文件中,可以使用以下格式来注册自定义标记:
(pytest)
markers = sit: 标记测试为 sit
uat: 标记测试为 uat
然后在测试用例中使用@pytest.mark.sit或@pytest.mark.uat来标记测试用例为sit或uat类型。
在pytest中,通过使用pytest.mark装饰器,可以对测试用例进行标记和分组。这允许根据不同的标准组织测试,并在执行时选择性地运行特定标记的测试。
# test_square.py
import pytest
@pytest.mark.others
def test_less():
assert 5 < 6
@pytest.mark.others
def test_equality():
assert 10 == 11 # 这个断言会失败
这里,test_less 和 test_equality 都被标记为 @pytest.mark.others,意味着它们属于名为 "others" 的组。
要运行所有标记为 "others" 的测试,可以在命令行中这样调用pytest:
pytest -m others
从给定的信息中可以看出,当运行这个命令时,pytest将会执行带有@pytest.mark.others标记的所有测试,并且结果显示test_equality测试失败了,而test_less测试通过了。
此外,也可以组合多个标记来进一步细化测试集的选择:
@pytest.mark.priority_high
@pytest.mark.network
def test_network_performance():
# ... 网络性能相关测试 ...
然后,可以通过 -m 'priority_high and network' 来只运行同时拥有这两个标记的测试用例。
pytest的标记功能具体使用
pytest的标记功能通过pytest.mark装饰器实现,允许你给测试函数或类添加自定义标签。这些标记可以在运行时用于筛选特定类型的测试进行执行。以下是具体的使用步骤和示例:
示例1:创建并使用标记
# 在测试文件中导入pytest模块
import pytest
# 定义一个标记(如:smoke测试)
@pytest.mark.smoke
def test_smoke_example():
assert True
# 定义另一个标记(如:slow测试)
@pytest.mark.slow
def test_slow_function():
# 这个函数可能包含耗时较长的操作
...
# 同时应用多个标记
@pytest.mark.smoke
@pytest.mark.priority_high
def test_critical_and_smoke():
assert True
运行标记过的测试
在命令行中,你可以选择性地运行带有特定标记的测试:
pytest -m smoke # 只运行标记为'smoke'的测试用例
pytest -m "slow and not priority_high" # 运行标记为'slow'但不标记为'priority_high'的测试用例
配置文件中的标记
在pytest配置文件(如pytest.ini或setup.cfg)中,可以预设标记,并且可以设置默认过滤规则:
Ini
[pytest]
addopts = -v --tb=short -m "not slow"
markers =
smoke: Smoke tests
slow: Tests that take a long time to run
priority_high: High priority tests
自定义标记参数
标记还可以带参数以提供额外信息:
@pytest.mark.run(order=1)
def test_first_order():
pass
@pytest.mark.run(order=2)
def test_second_order():
pass
然后可以通过自定义插件或者解析标记参数来自定义处理逻辑。
通过这种方式,pytest标记功能极大地增强了对测试集的组织和控制能力,可以根据需求快速调整测试执行策略。
自定义插件处理标记
创建一个pytest插件来处理名为run_last的标记,并确保带有该标记的测试函数最后运行:
# my_plugin.py
import pytest
def pytest_collection_modifyitems(items):
last_items = []
for item in items:
if 'run_last' in item.keywords:
last_items.append(item)
items.remove(item) # 移除待最后运行的项
items.extend(last_items) # 将它们添加到列表末尾
@pytest.mark.run_last
def test_function_to_run_last():
assert True
现在,在你的测试代码中,任何标记为@pytest.mark.run_last的测试函数都会被安排到最后执行。
标记与参数化测试结合使用
pytest的标记还可以与参数化测试结合,提供更多的灵活性:
import pytest
@pytest.mark.parametrize("input,expected", [(1, 2), (2, 4)])
@pytest.mark.fast
def test_doubler(input, expected):
assert input * 2 == expected
在这个例子中,test_doubler函数是参数化的,它将根据给定的参数组合运行多次,同时所有实例都被标记为fast。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。