python测试工具

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中加入

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容