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. 【python基础】五大数据类型及常用方法

    1. 数据类型概述 python中的字符串,列表,元组,字典,集合这五种数据类型均是可迭代的,可以使用for循环访问,涵盖了三类数据结构分别为序列.散列.集合. 序列: 字符串 str 列表 list ...

  2. 从桌面和应用内 Activity的启动流程

    1.APP还没有被打开过从桌面启动 <1>首先桌面进程会像AMS服务发送startActivity的请求,AMS从system_service中去拿----一次IPC通信 <2> ...

  3. zookeeper重启,线上微服务全部掉线,怎么回事?

    注册中心zookeeper被重启,线上微服务全部掉线,怎么回事?! 最近因为一次错误的运维操作,导致线上注册中心zk被重启.而zk重启后发现所有线上微服务开始不断掉线,造成了持续30分钟的P0故障. ...

  4. LNMP搭建静态网页服务器

    chattr -i default/.user.ini LNMP搭建使用 1.安装screen,命令或者操作可以一直运行下去 yum install screen 2.获取及安装 LNMP wget ...

  5. 借助 APISIX Ingress,实现与注册中心的无缝集成

    作者张晋涛,API7.ai 云原生技术专家,Apache APISIX PMC 成员,Apache APISIX Ingress Controller 项目维护者. 原文链接 云原生场景下是否需要服务 ...

  6. 20130625-关于mac配置android cocos2dx

    1.下载cocos2dx  ndk  eclipse http://developer.android.com/tools/sdk/ndk/index.html 2.cocos2dx文件中找到crea ...

  7. boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)

    boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续) 书接上回 项目源码仓库github 项目源码仓库gitee boot-admin 是一款采用前后端分离 ...

  8. 容易忽视的细节:Log4j 配置导致的零点接口严重超时

    作者:vivo 互联网服务器团队- Jiang Ye 本文详细的记录了一次0点接口严重超时的问题排查经历.本文以作者自身视角极具代入感的描绘了从问题定位到具体的问题排查过程,并通过根因分析并最终解决问 ...

  9. 2022-10-12:以下go语言代码输出什么?A:1;B:2;C:panic;D:不能编译。 package main import “fmt“ func main() { m := m

    2022-10-12:以下go语言代码输出什么?A:1:B:2:C:panic:D:不能编译. package main import "fmt" func main() { m ...

  10. 2022-03-05:不相交的线。 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直

    2022-03-05:不相交的线. 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数. 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直 ...