当我试图解释我的困境时,请耐心等待,我仍然是一个 Python 新手,所以我的术语可能不正确。另外,我对这篇文章不可避免的冗长感到抱歉,但我会尽力解释尽可能多的相关细节。
快速概述:
我目前正在使用 py.test 为一组功能基本相同的网站开发一套 Selenium 测试
使用 pytest 插件pytest-testrail 将测试结果上传到 TestRail。
测试使用装饰器 @pytestrail.case(id) 进行标记,并具有唯一的案例 ID
我的一个典型测试如下所示:
@pytestrail.case('C100123') # associates the function with the relevant TR case
@pytest.mark.usefixtures()
def test_login():
# test code goes here
Run Code Online (Sandbox Code Playgroud)
正如我之前提到的,我的目标是创建一组代码来处理具有(几乎)相同功能的许多网站,因此上面示例中的硬编码装饰器将不起作用。
我尝试了一种数据驱动方法,其中包含 csv 以及 TestRail 中的测试列表及其案例 ID。
例子:
website1.csv:
Case ID | Test name
C100123 | test_login
website2.csv:
Case ID | Test name
C222123 | test_login
Run Code Online (Sandbox Code Playgroud)
我编写的代码将使用检查模块来查找正在运行的测试的名称,找到相关的测试 ID 并将其放入名为 test_id 的变量中:
import csv
import inspect
class trp(object):
def __init__(self):
pass
with open(testcsv) …Run Code Online (Sandbox Code Playgroud)