接口测试 HttpRunner v3.x 中文文档

在路上 · 2021年01月08日 · 最后由 404铁头娃 回复于 2021年06月30日 · 18534 次阅读
本帖已被设为精华帖!

背景

最近在公司内部需要做接口相关的工具,所以计划使用比较流行的 httprunner。
但是发现HttpRunner v3.x 的官方文档是英文文档,对于中文不好的我来说,看着有点费劲。
所以用了两天时间把文档翻译了一下,肯定有翻译错误和误区,烦请大家轻拍,也可以在 Issue 中直接提 BUG 或 PR。

见:HttpRunner V3.x 中文文档

httprunner v3.x 使用者交流群

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 24 条回复 时间 点赞

牛了个逼

HttpRunner V3.x 中文文档 超链接无效

IAmTester 回复

我这边没问题,Wi-Fi、4G 都没问题。https://www.ontheway.cool/HttpRunner3DocsForCN/

这也太酷了!

在路上大佬要维护 httprunner 吗?大好事啊,支持

我去催饭 回复

别闹,我水平不够

在路上 回复

我现在不得不想别的办法,因为 httprunner 如果不二次开发,修改 $ 的用法,就做不了 GraphQL 这种形式的接口测试😂 而公司产品恰恰很多用的是这种接口形式

我去催饭 回复

😂。我还没遇到,是 $ 关键字冲突吗?可以详细说说一起想想办法

恒温 将本帖设为了精华贴 01月10日 15:07
在路上 回复

是的,GraphQL 里的请求参数里会用 $+ 变量名这种方式声明入参的数据结构,恰好和 httprunner 的参数化规则冲突了,比如说一个参数:username,在正常的 restful 接口里就是 username:tester1 这种键值对的形式,但是 GraphQL 这种接口里可能就是 $username string:tester1, 这样的话 httprunner 就会认为这个键值对里的 Key 是一个变量,进而报找不到参数的错误。这是框架本身的规则限制,我不知道怎么改这个。还有一个场景是我朋友碰到的:.extract() 里的 withjmspath,假如说数据结构是 data.list[0].username,这个 list[0] 是不能用自定义变量来代替的,比如说我想通过上一个接口的返回参数获取了这个 list 的 index 值,设为 s,但是我在这个 case 里,是不能通过 data.list[s].username 来解析出对应的数据的。这个我也不知道咋处理😂 大佬如果遇到了可以想想办法

我去催饭 回复

这种可以看看源码,其实主要是关键字问题,找个关键字替换了就成

在路上 回复

$ 这个关键字用的地方太多了,我也不知道换什么

我去催饭 回复

回头我看看,能不能替换成 ${}这样更通用的参数变量格式

我去催饭 回复

httprunner 2 里面看是通过正则表达式来进行匹配的, 你可以找到那个正则表达式, 改一下就 OK 了

Httprunner 是没人维护了吗?

matt gong 回复

应该有吧

增加了 httprunner v2.x 中的基础概念部分,并做了 v3.x 的适配

httprunner3.0 还是没支持 swagger2case 么,之前看有建了这个项目,但一直没有开始,如果目前还没有,如何通过 swagger 直接生成 httprunner 支持的 json

van 回复

应该还没,没看到 httprunner 作者关于这块的更新

在路上 回复

嗯,确实没有,那如何通过 swagger 直接生成 httprunner 支持的 json,有这块相关的解决方案么

@zailushang 问下,在接口请求中 ,需要加入变量,应该怎么处理,求解答,谢谢。我用下面的方法貌似无法取到。
teststeps = [
Step(
RunRequest("session")
.get("/api/$session)

Griffin 回复

按照如下方式可以拿到

获取到变量的 URL 如下:

仅楼主可见
仅楼主可见

你好,想问一下;我想要断言接口的响应时间,现在是通过在 debugtalk.py 里面一个方法返回的值;能直接像 status_code 这样直接断言么?

# testcase.py

.validate()
.assert_equal("status_code", 200)
.assert_less_or_equals("${get_elapsed($response)}", 5)


# debugtalk.py

def get_elapsed(response):
    return response.elapsed.seconds
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册