接口异常,下架失败表示没有下架,没有下架的商品依然展示在 c 端不是很正常吗,这有什么问题?这个用例是通过的呀
yaml 文件里应该加入一个"-"代表列表,不加代表字典,pytest 的 parametrize 可以理解成跟 for 语句一样,只会遍历字典的键,所以不加"-"只会读取 case_common。以下是效果图:
yaml 文件:
第一个问题,图 1,48 行,你直接调用了夹具,夹具是不能直接调用的,由测试用例文件引入,由 pytest 直接调用
第二个问题,没有测试用例文件。pytest 默认会将” test_“开头的 py 文件视为测试用例文件,将测试用例文件里面 Test 开头的类和 test_开头的方法视为测试用例
夹具定义在 conftest.py 文件内,测试用例单独写入一个 test_的 py 文件内
会不会是这四个接口都是单独实例化的,每个用例的 headers 不互通。建议创建一个 BaseApi 类,定义类属性 headers 和实例方法 set_headers 来修改每个不同接口的 header 值,所有接口都继承这个类,1 接口登录之后调用 set_headers 修改类属性 headers 的 token 键,4 接口实例化时就可以直接用这个 headers
那可以通过 get_by_text 定位到列表的唯一标识列,比如标题名称,然后通过标题名称列和按钮列的相对位置关系定位到该行的按钮;最好封装一个函数,传唯一标识列的文字内容就可以自动定位到该行的发布按钮
建议别用 xpath,后期不好维护,按钮可以试试用 get_by_role(role="button", name="发布") 看能不能定位到唯一值,要是不行再组合一下 xpath
哥,单词拼错了。。。
为什么要用类名.实例方法
self.page.get_by_role("dialog", name="menuitem").get_by_text(province,exact=True)
推荐直接用 ChromeDriverManger 动态匹配浏览器版本,不再使用固定驱动,然后设置--no-sandbox,--disable-gpu 和--headless 的 options 配置