使用httprunner3.x版本
python版本是3.6
测试环境是zen dao
以下为脚本:
# NOTE: Generated By HttpRunner v3.1.0 # FROM: assign_me.har import re from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase class TestCaseAssignMe(HttpRunner): config = ( Config("testcase description") .verify(False) .variables(**{}) .base_url("http://192.168.75.175") ) teststeps = [ Step( RunRequest("login with username and password") .post("/zentao/user-login.html") .with_headers( **{ "Accept": "application/json, text/javascript, */*; q=0.01", "X-Requested-With": "XMLHttpRequest", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "http://192.168.75.175/zentao/user-login.html", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,lb;q=0.7" } ) .with_data( { "account": "admin", "password": "qazwsx123", "referer": "/zentao/", "keepLogin": "1", } ).validate() .assert_equal("status_code", 200) .assert_equal('headers."Content-Type"', "text/html; Language=UTF-8;charset=UTF-8") .assert_equal('body.result', 'success') ) , Step( RunRequest("check bugs that are assigned to me") .get("/zentao/bug-browse-1-0-assigntome.html") .with_headers( **{ "Host": "192.168.75.175", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Referer": "http://192.168.75.175/zentao/bug-browse-1-0-unclosed.html", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,lb;q=0.7", "Pragma": "no-cache", "Cache-Control": "no-cache", } ).validate() .assert_equal("status_code", 200) .assert_equal( 'headers."Content-Type"', "text/html; Language=UTF-8;charset=UTF-8" ) .assert_contains('body', "data-id='6'".encode('utf-8')) ), ] if __name__ == "__main__": TestCaseAssignMe().test_start()
1 采用charles录制,导出
2 使用har2case 将har文件转换为python脚本,如上;
3 修正脚本,主要是去除不需要的部分,修改断言部分,参数化url部分
与手写pytest的区别:
最主要的一点是:
httprunner的作者设定为接口调用返回的都是json格式的数据,所以httprunner的断言函数都是依据此假设封装的
这一点对我不适用
手写pytest脚本的话完全不受此限制,可以方便的结合re模块从html中提取信息做断言
但是httprunner录制脚本然后转换的做法,生成脚本的速度确实是非常快