Django自身提供测试类、工具

django.test.Client

他的作用是模拟客户端。
提供一系列的方法,例如get、post、delete、login等
其中login是用django自身的验证,特殊之处是实例化的Client可以拿到session、cookie【Client.cookies、Client.session

SimpleTestCase

非数据库查询的

TransactionTestCase

有数据库操作,在测试结束后直接清空数据库。

TestCase

常用的编写测试的类,他是以事务的方式回滚数据,相对来说更好。不过有些数据库不支持,就会报错。(例如,MyISAM 引擎的 MySQL)
另外如果本身要测试的类自身带有事务属性,那么在使用这个工具处理的时候也要额外做一些操作。

LiveServerTestCase

这个比较特殊,他本身和 **TransactionTestCase **差不多,区别是本类会后台启动一个 类似runserver的服务,这样就可以使用 selenium 来做对应的请求,并且在对应的操作结束后,会和 **TransactionTestCase **一样,执行结束后清空数据库.

调研初步结论

Django测试工具优点

  1. Django提供了丰富的测试工具类,特别是关于测试过程中产生的数据处理方式【不处理、全局清理、借住事务进行回滚操作】
  2. Django提供了Client类,可以模拟客户端访问Api、View并对结果进行判断,并记录上下文需要的Cookie、Session

Django缺点

  1. 如果本身不用Django编写的程序,使用Django的测试工具编写测试用例好像于pytest编写的测试用例没啥区别。
  2. 要编写大量的代码。
  3. 与selenium交互不是很理想,几乎就丧失了对Ajax、Vue等方式的测试能力。

推荐

  1. 使用ApiPost录入Swagger,并组织一下执行的顺序,来实现无界面话的接口测试。(生成接口文档、测试用例)
  2. 是用Selenium 录制动作,并生成Python pytest脚本,来执行。

ps:再做一个程序,数据库的备份和还原

Selenium

使用Selenium IDE 浏览器插件,直接录制内容,并生成 pytest脚本

导出脚本参考

# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities class TestTest2():
def setup_method(self, method):
self.driver = webdriver.Chrome()
self.vars = {} def teardown_method(self, method):
self.driver.quit() def wait_for_window(self, timeout=2):
time.sleep(round(timeout / 1000))
wh_now = self.driver.window_handles
wh_then = self.vars["window_handles"]
if len(wh_now) > len(wh_then):
return set(wh_now).difference(set(wh_then)).pop() def test_test2(self):
self.driver.get("https://www.baidu.com/")
self.driver.set_window_size(1057, 808)
self.driver.find_element(By.ID, "kw").click()
self.driver.find_element(By.ID, "kw").send_keys("Python")
self.driver.find_element(By.CSS_SELECTOR, ".bdsug-s").click()
self.driver.find_element(By.ID, "su").click()
self.vars["window_handles"] = self.driver.window_handles
self.driver.find_element(By.LINK_TEXT, "Python 集中营的博客_CSDN博客-python,java算法,框架领域...").click()
self.vars["win8739"] = self.wait_for_window(2000)
self.driver.switch_to.window(self.vars["win8739"])
self.vars["window_handles"] = self.driver.window_handles
self.driver.find_element(By.CSS_SELECTOR, "div:nth-child(1) > .blog-list-box h4").click()
self.vars["win5468"] = self.wait_for_window(2000)
self.driver.switch_to.window(self.vars["win5468"])
self.driver.find_element(By.CSS_SELECTOR, ".blog_extension_card_cont_l > .text").click()
self.driver.find_element(By.CSS_SELECTOR, ".blog_weixin_box_btn > span").click()
self.driver.find_element(By.ID, "blog_weixin_box_close").click()

Django自身提供测试类、工具-调研的更多相关文章

  1. Django单元测试(二)------测试工具

    The test client test client是一个python类,来模拟一个简单的“哑”浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情: 1.模拟&quo ...

  2. 开源Web安全测试工具调研

    开源Web安全测试工具调研 http://blog.csdn.net/testing_is_believing/article/details/22302087

  3. mongoDB工具类以及测试类【java】

    java操作mongo工具类 package Utils; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; im ...

  4. java并发学习--第七章 JDK提供的线程工具类

    一.ThreadLocal ThreadLocal类用于隔离多线程中使用的对象,为ThreadLocal类中传递的泛型就是要隔离的对象,简单的来说:如果我们在主线程创建了一个对象,并且需要给下面的多线 ...

  5. Python测试 ——开发工具库

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  6. iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

    背景 对苹果开发者而言,由于平台审核周期较长,客户端代码导致的线上问题影响时间往往比较久.如果在开发.测试阶段能够提前暴露问题,就有助于避免线上事故的发生.代码覆盖率检测正是帮助开发.测试同学提前发现 ...

  7. C/C++代码静态分析工具调研

    C/C++代码静态分析工具调研 摘自:https://www.jianshu.com/p/92886d979401 简述 静态分析(static analysis)是指在不执行代码的情况下对其进行分析 ...

  8. django应用的测试

    本文章默认用户使用win10系统,并且已经安装pycharm.git.django2.2.5及配套第三方库(python3.6.0及以上版本,且为anaconda环境) 前言 其实在上一期django ...

  9. python测试开发工具库汇总(转载)

    Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. selenium - web UI自动化测试. mechanize- Python中有状态的程序化Web浏 ...

  10. Android自动化测试工具调研

    原文地址:Android自动化测试工具调研 - Stars-One的杂货小窝 Android测试按测试方式分类,可分为两种:一种是传统逻辑单元测试(Junit),另外一种则是UI交互页面测试. 这里详 ...

随机推荐

  1. .NET Exceptionless 本地部署踩坑记录

    仅已此文记录 Exceptionless 本地部署所遇到的问题 1.安装ElasticSearch文本 执行elasticsearch目录中的elasticsearch.bat 没有执行成功. 使用命 ...

  2. CentOS 7 更改内网 IP

    打开网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-em2 修改配置文件如下 TYPE=Ethernet PROXY_METHOD=none BROWS ...

  3. Vue上传XLS文件

    data() { return { tableData:[] } }, //原生JS+XLSX包实现 xls文件上传 methods: { //上传excel表格文件 uploadHandler(da ...

  4. 基于Python的爬虫案例

    案例1:使用爬虫爬取京东华为手机用户评论 本案例借鉴哔哩哔哩博客主视频教程,感谢其教程为我开启了爬虫之旅:https://www.bilibili.com/video/BV1Yt4y1Y7nt?t=3 ...

  5. T-SQL基础教程Day3

    第三章 联接3.1交叉联接交叉联接是最简单的联接类型.交叉联接仅执行一个逻辑查询处理阶段--笛卡尔乘积将一个输入表的每一行与另一个表的所有行匹配SQL Server支持交叉联接的两种标准语法:ANSI ...

  6. ArcGIS Pro发布地图服务(影像、矢量)

    做GIS一般都是用ArcMap发布影像或者矢量服务,由于ArcGIS后续不在更新ArcMap,改用ArcGIS Pro,本文对ArcGIS Pro发布服务进行说明. 本文示例使用(因为portal的授 ...

  7. MQTT-发布与订阅的报文

    MQTT发布订阅流程 在MQTT发布/订阅模式中,一个客户端既可以是发布者,也可以是订阅者,也可以同时具备这两个身份.当客户端发布一条消息时,它会被发送到代理,然后代理将消息路由到该主题的所有订阅者. ...

  8. 飞行时间技术TOF

    文章目录 飞行时间技术TOF 一. 光速的测定 二. 各种TOF技术 直接脉冲TOF 脉冲间接TOF 连续波调制TOF(Continous Wave TOF) 三. TOF技术的应用 飞行时间技术TO ...

  9. SQL语句获取数据表结构定义,适合导出EXCEL为文档

    SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colorder=1 Then isnull ...

  10. 基于python爬虫技术对于淘宝的数据分析的设计与实现

    本篇仅在于交流学习 本文主要介绍通过 selenium 模块和 requests 模块,同时让机器模拟人在浏览器上的行为,登录指定的网站,通过网站内部的搜索引擎来搜索自己相应的信息,从而获取相应关键字 ...