美文网首页
python测试工具

python测试工具

作者: becareofzm | 来源:发表于2019-01-29 00:19 被阅读5次

    django提供了一小系列工具在你写测试工具

    测试客户端client

           测试客户端client是个可以充当虚拟web浏览器的python类,可以让你测试你的视图层, 以编程的方式与你的django应用互动。

           你可以使用测试客户端做一些事情

    模拟url的get和post请求和观察返回结果, 包括返回的请求头和响应的状态码以及页面内容

    查看跳转链接并检查重定向和状态码

    测试给定请求是否呈现的是给定的模板

    请注意, 测试客户端并非要带带slecuium或者其他浏览器框架, django的测试客户端有一个不公的关注点, 简而言之

    使用django测试客户端是为建立正确的样例呈现, 并且该样例能正确的通过上下文测试数据

    使用像selenium这样内置浏览器的框架测试呈现的html和页面行为, 也就是javascript函数。django对这个这些框架进行了特别的支持;看LiverServerTestCase部分了解更多的详情

    一个全面的测试套装应该两种测试的的组合

    概况及简单样例

    要使用测试客户端, 先实例一个django.test.Client,然后获取页面

    >>> from django.test import Client

    >>> c = Client()

    >>> response = c.post('/login/', {'username': 'john', 'password': 'smith'})>>> response.status_code200

    >>> response = c.get('/customer/details/')

    >>> response.contentb'<!DOCTYPE html...'

    这是个示例, 你当然也可以在python交互式回话中实例化Client

    在测试工作时有一些重要的事情值得注意

        测试客户端不需要web服务器运行, 实际上在没有web服务器运行的情况下将运行的更好

        当你请求页面时,请不要填写全部域名,而是指定路径

    例子, 正确形式

    >>> c.get('/login/')

    错误形式

    >>> c.get('https://www.example.com/login/') 

    测试客户端对不是你的django项目web页面是无能为力的, 如果你需要请求其他的web页面,可以使用python的标准库urlllib

           对于解释urls, 测试客户端可以使用任何由你的ROOT_URLCONF设置的URLconf

           即使以上的样例都能工作在python的交互性解释器上, 但是像模板相关功能只能在测试运行的时候才能测试

    这是测试runner的一点黑魔法, 为了确定view已经加载了给定的模板

    默认在你自己的站点测试端将取消所有CSRF检查动作

    在某些情况下,你想要测试CSRF, 你可以实例化一个强制执行CSRF检查的测试客户端, 你可以使用enforce_csrf_checks参数构建一个测试客户端

    >>> from django.test import Client >>> csrf_client = Client(enforce_csrf_checks=True)

    发出请求

    使用django.test.Client类发送请求

    class Client(enforce_csrf_checks=False, json_encoder=DjangoJSONEncoder, **defaults)

    测试客户端构建不需要参数, 然后你可以使用关键值指定某些默认的请求头, 例如, 你可以发送User-Agent请求头在每次http请求中

    c=Client(HTTP_USER_AGENT='Mozilla/5.0')

    传递给get, post请求的额外参数有先有构造测试客户端的默认参数

    enforce_csrf_checks参数被用测试CSRF保护机制

    json_encoder参数允许在post请求中设置一个定制的json编码器来序列化json

    json_encoder 是在django2.1中加入

    一旦你有一个测试客户端, 你可以请求下面任意一个方法

    相关文章

      网友评论

          本文标题:python测试工具

          本文链接:https://www.haomeiwen.com/subject/lrxtsqtx.html