正好我也碰到这个问题,然后试了一下是可行的
新加了一个 conftest.py 文件,文件内容如下:
from server.config import config
def pytest_itemcollected(item):
"""
Modify the _nodeid attribute of the item by appending the node name from the config
to the beginning of the original nodeid.
"""
item._nodeid = f'{config.node_name}.{item.nodeid}'
然后问题就解决了
大佬,请教个问题,pytest 多机并行(在 jenkins 上多个 slave 运行)结束后,如何生成一份完整的 allure 报告,把多设备的数据在一份 allure 报告内区分开来(现在只会显示一个 slave 的数据,其它的 salve 相同的 case 会显示在 history 中)。我用了下面的这种方式,还是不行:
@allure.suite(config.node_name)
@allure.parent_suite(config.node_name)
@allure.feature(config.node_name)
@pytest.mark.parametrize("test_step", test_steps, ids=test_ids)
def test_input_rows(test_step, request):
........
该如何在报告中显示所有的 slave 的所有 case 情况啊?
想问一下楼主是在测试方法的上面加@allure.feature("xxx") 这个装饰器吗?
想问一下怎么动态修改测试用例名?是用 allure.dynamic.title 吗?
我回传了,把所有生成的 json 文件都放到了一个文件夹下,但是这样生成显示的只有一个 slave 的 case,另外一个 slave 的 case 可能是因为名字是一样的所以被放到了 history 下面显示。
我在测试方法上加了这个装饰器:@allure.suite(config.node_name),同时在测试方法里加了 allure.dynamic.title(f"{config.node_name}-{test_id}"),然后再不同的 slave 上运行同样的 case,结果在 jenkins 的报告中只看到了一个 slave 的结果
是可以区分,但是我是想不同的 salve 即使跑相同的 case 最后回传结果生成 report 的时候也能在一个 report 上显示出来
然后最后结果都回传到 master 然后再生成 report
我用了@allure.suite() 这个属性,但是好像没生效
我们用的是 jenkins 跑在不同的 salve 上同时运行的。
好的,谢谢,我也入手了这个书。那对于反推影响的界面或者接口这种方式,有推荐的文章或者案例分析吗?
两年过去了,怎么维护好 测试用例->代码(函数/行/接口)这个映射关系,不知道对于这种思路现在有没有更好的办法
这个《不测的秘密 - 精准测试之路》有电子版可以共享一下么
https://github.com/zxytest/Istanbul-middleware-Demo/blob/main/test/app/README.md。
这个是我本地尝试成功的一个 demo,把 Istanbul-middleware 作为结果展示和收集的一个服务端,然后在 case 中获取覆盖率数据并发给服务端展示,只是一个简单的模式运行,希望可以抛砖引玉,能有更好的解决方案。
这个截图是按照顺序的
我合并后的文件是这样的:
我后来还是没有合并成一个文件,而是把两个文件放到了同一个目录下。
大侠,想问一下,Istanbul-middleware 给的例子中,是从 app 目录下的 index.js 调用 server 文件夹下面的 index.js,我有尝试把两个文件合并为一个文件来运行,可是即使能运行也不能拿到覆盖率数据(运行中打桩而不是事先打桩的情况)。大侠有空的时候能帮忙看看是否可以合并成一个文件啊?
加班情况怎么呀啊那边?
我尝试通过的也只是本地跑的 demo,不知道在微服务架构下该如何解决,期待大佬的成果
我好像大概知道点 istanbul-middleware 所谓运行中打桩的用法了
恒温大佬的建议真的太好了,期待一个完美的完整解决方案问世
感谢大佬指导,讲解的很清楚,单个服务的时候可以拿到了,但是实际项目中我们是微服务模式而且用了 docker,端口应该是做了映射,serverip+server.js 中指定的端口目前不能访问,等周一去问开发他们的映射后真正对外端口后再试试看,感谢大佬的耐心详细指导。