在如何通过robotframework发起第一个请求里介绍了如何用一个变量去接收请求的返回值
下面来看看该返回值里面都包含些什么东西,我们如何判断一个请求是否调用成功?也就是我们如何来判断这个测试用例是跑成功了还是跑失败了?
首先我们先看看返回值具体是什么:
首先这里面用到了关键字Evaluate,evaluate后面跟python的一些表达式函数等,这里用到的type和dir就是python里面的函数,用于查看某个对象的类型和属性,注意type和dir里面变量名称的用法,是去掉了{}的
把结果再赋值给test_type和test_dir两个变量,打印出来进行查看
从上图可以看出,接口的返回值属于Response类,该对象有以下属性:
['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', '_next', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'is_permanent_redirect', 'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 'next', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']
一般我们会用到里面的status_code判断状态码是不是200,会用到content或者text去对响应体进行更深一层次的抽取比对来进一步判断请求是否达到预期效果
打印content和text查看发现二者其实是一样的,只是content会有编码上的问题,text能正常显示中文
可能还会用到返回值的headers里面的内容,比如登录以后想从响应头里面获取cookies
一般对返回值进行check的时候,都会从状态码和响应体里面抽取具体的数据两个方面进行判断,如果只是单纯的判断状态码,很有可能导致误判
我们可以看到下面这个case显示通过了,因为只对其状态码进行了一个简单的check,检查状态码是不是等于200,但其实分析响应体并不是我们想要的,所以单纯的只是检查状态码是很容易造成误判的
我们再增加一个检查点,检查响应体里面是不是包含某个字符(出于对接口的了解,我们应该清楚这个接口如果是正常调用那么返回值里面应该包含些什么)
这样就成功的判断出该接口调用失败了
这里面的判断用到的是should XX关键字,BuiltIn库下有很多should关键字,基本上已经可以满足绝大部分需求了,如果系统提供的这些关键字还达不到我们的需求,那么我们也可以自己通过python编写属于我们自己的关键字(函数)
总之,只要我们拿到了响应体,具体怎么设置check点,就根据实际需求设置了,同一个接口,面对不同的传参,返回值多半是不一样的,所以我们需要在不同的测试用例里面设置不同的check点,这一点需要灵活使用