用 pw 最好用它提供的定位方式,css,xpath 是最后才考虑的,这个用 get_by_role 应该很容易定位
ao 就是对接口的抽象封装,这一层抽象里包含了这个接口的前置(依赖参数提取)和后置(异步处理),可以看作一块积木,场景用例无非就是不同积木的组合。
其中,@aomaker.dependence,就是这个前置,是用来标注这个接口的需要哪些依赖参数的。
举个例子,比如一个创建集群接口,输入参数需要依赖一个网络 id 和存储 id,而这两个 id 需要对应的查询接口来获取,那通过@dependence就可以标注出这两个查询接口,当调用创建集群这个接口的时候,自动去查询、自动去提取出网络 id 和存储 id 这两个依赖参数注入到创建集群的请求参数中。
那问题来了,如果并没有创建网络和存储,那压根就查不出来,那就无法创建集群了?这种情况,从业务层面来看相当于有一个隐藏的前置条件,就是如果没有网络和存储,得先创建。那针对创建集群这种可能会高度复用的场景,可以单独抽象一层业务层,这里的逻辑包括:调用网络和存储的查询 ao,检查是否已存在网络和存储,如果不存在,调用创建网络和存储的 ao,然后再调创建集群 ao。
不知道通过这个例子能不能解答你的疑惑。
这没用例执行呀。。
看下代码
这应该是你没装 allure 的客户端,如果是的话,看下楼上的回复
脚手架里也有 demo
要灵活最好还是直接用代码,平台直接映射工程。平台的重点还是提供运行,数据度量和统计分析。大部分低代码平台都搞成了 web 版 postman,中看不中用。
aomaker 交流群,v:ae86sen
过奖过奖~感兴趣可以玩玩,欢迎交流探讨
None 并不是在数据类实例化时过滤的,是在发请求前构造请求体时过滤的
加 v:ae86sen
我一般参数多会这么玩
握爪~
建了个交流群,欢迎交流探讨 可以加我 v
没深入使用过 hr3 和 hr4,不敢妄言。
只能说 aomaker 更偏向于硬编码的方式去写 case 和 ao,好处是灵活性和掌控性更高一些,不会受限于模板引擎的规则中,但上手门槛可能也会相应高一点,不过对于代码熟手来说其实也还好,看个人喜好吧。(就自动化而言,个人还是更喜欢直接写代码的方式 )
这里也回复下,避免其他人踩坑。
allure 是由两部分组成:
1.allure-pytest,也就是你 pip list 里看到的
2.allure-command 客户端,这不是 python 包,需要单独安装(依赖 java 环境)
感谢支持~
忘了贴仓库地址
https://github.com/ae86sen/aomaker
另外已经发布到 pypi
直接 pip install aomaker
即可一键安装
机里机气的
bug 本身就是虫子的意思
取消了 threading.local() 后,会导致 allure 的一些装饰器失效啊兄弟,这块现在修复了么
受用了
能开源就值得支持
难道没发现 setup_class 方法少一个类装饰器
多进程最好还是别用 fixture 了,挺坑的,即使用文件锁解决了 fixture 重复调用的问题,那也可能出现进程 A 还在执行 fixture,进程 B 已经开始执行 case 了,但这个 case 又需要 fixture 的结果的情况,很麻烦。
我的处理方式是,将 fixture 的一些前置操作置于主进程,子进程只负责执行 case。