当我在 VS Code 中运行此代码时,它给出消息“0.2 秒内没有运行测试用例”。那么,如何在 VS Code 中运行测试用例。
import pytest
from selenium import webdriver
from time import sleep
from webdriver_manager.chrome import ChromeDriverManager
# from testcases.utilities.BaseClass import BaseClass
@pytest.mark.usefixtures("setup")
class Login():
def test_login(self, setup):
setup.driver.get("https://www.google.com/")
sleep(5)```
来自 pytest 文档(强调我的):
“pytest 会发现遵循 Python 测试发现约定的所有测试,因此它会找到两个以 test_ 为前缀的函数。无需子类化任何内容,但请确保在您的类中添加 Test 前缀,否则该类将被跳过。”
好答案,它遵循关于测试发现约定的pytest
文档指南。
Pytest
通过自动发现遵循特定命名约定的测试函数和类来简化运行测试的过程。具体来说,为了让
pytest
识别类中的测试用例,类名必须以 Test 开头。您的类名 Login 不遵循此约定,这就是为什么当您尝试执行代码时
pytest
没有运行任何测试。了解
pytest
如何组织和运行测试非常重要。当使用
pytest
将测试分组到类中时,这些类不需要从
pytest
提供的任何特殊基类继承
该组织可以帮助逻辑地构建测试,特别是在处理较大的测试套件时。为了让 pytest
识别并运行类中的测试,必须适当地命名其中的方法,通常以
test_
开头。此命名约定向
pytest
表明哪些方法是测试用例。此外,
pytest
文档详细阐述了将测试分组为类的好处,例如改进的测试组织、在同一类中跨测试共享固定装置的能力,以及在类级别应用标记以影响所有包含的测试。然而,
pytest
中的一个关键设计选择确保类中的每个测试方法都有该类的唯一实例。这种方法促进测试隔离并阻止测试之间的状态共享,这是软件测试中的最佳实践,以避免可能导致脆弱测试的测试间依赖关系。此外,
pytest
提供了强大的固定装置,可用于设置和拆除测试环境或提供测试所需的资源。这些装置可以在多个测试函数和类之间确定范围和共享,进一步增强测试组织和可重用性,这是面向对象编程的基石之一(继承、多态性和封装是其他)。最后,pytest 的自动发现和命名约定旨在使开发人员更轻松地高效编写和运行测试。熟悉这些约定及其背后的基本原理非常重要,以便有效地利用
pytest
来满足您的测试需求。遵守命名约定(类为
TestClass
,方法为
test_
前缀)可确保您的测试按预期被发现和执行。对于 VS Code 中的实际步骤,请确保您已为您的项目安装并配置了 Python 扩展(我使用 Microsoft 的扩展)。在资源管理器中右键单击测试文件或使用命令面板运行测试。如果仍未发现测试,请检查
settings.json
文件中 pytest 的配置设置(或确保
pytest
已正确安装并在项目的虚拟环境中被识别)。