首页 > 其他分享 >Django自身提供测试类、工具-调研

Django自身提供测试类、工具-调研

时间:2023-07-03 16:45:10浏览次数:32  
标签:selenium self driver Django window 测试 import find 调研

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脚本
image



导出脚本参考

# 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()

标签:selenium,self,driver,Django,window,测试,import,find,调研
From: https://www.cnblogs.com/degao/p/17523260.html

相关文章

  • django.db.models.query.QuerySet格式的数据输出
    1、deffindmtm2(request):importserializerimportjson#多对多跨表正向查询#res=softlist.objects.filter(hostlists__ip="10.116.6.177").values("softname")res2=softlist.objects.filter(hostlists__ip="10.116.9.233"......
  • APP性能测试工具 - PerfDog
    介绍安装及运行重要提示软件性能数据采集iOS平台Android平台Web性能数据管理数据陷阱介绍移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题,提升APP应用及游戏性能和品质。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何修改,极简化即插即用。......
  • 保姆级教程:带你体验华为云测试计划CodeArts TestPlan
    摘要:华为云测试计划(CodeArtsTestPlan)是面向软件开发者提供的一站式云端测试平台,覆盖测试管理、接口测试,融入DevOps敏捷测试理念,帮助您高效管理测试活动,保障产品高质量交付。本文分享自华为云社区《保姆级教程:带你体验华为云测试计划CodeArtsTestPlan》,作者:华为云PaaS服务小智......
  • App自动化测试工具 - AirTest
    App自动化测试工具-AirTest本次专题分享的系列目标AriTest简介AirTest能做什么AirTest搭建方式AirTestIDE工具下载AirTestIDE安装步骤AirTestIDE布局AirTestIDE链接Android设备远程设备连接兼容模式AirTest图像框架API新建脚本类型选择区别:Tips:运行脚本查看报......
  • 如何在Django中创建一个简单的计算器应用程序
    Django是一个免费开源的PythonWeb框架,可帮助您快速开发安全且可维护的Web应用程序。在本教程中,我将逐步指导您使用django创建计算器应用程序。这是一个适合初学者的教程,因此如果您是Django新手,可以继续学习。(更|多优质内|容:java567点c0m) 我们的计算器应用程序会......
  • Jmeter学习之一_连接与测试Redis
    Jmeter学习之一_连接与测试Redis简介下载:https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.6.zip注意事项:Don'tuseGUImodeforloadtesting!,onlyforTestcreationandTestdebugging.Forloadtesting,useCLIMode(wasNONGUI):jmeter-n......
  • 接口测试工具postman和禅道zentao的区别?
    无论你是一名资深测试人员还是刚入行的新手,你都必须知道:测试工具是提高工作效率、保证产品质量的重要助手。postman大家都知道,zentao又是什么?两者不是一类软件。禅道(zentao)开源项目管理软件是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组......
  • 三. 软件工程 --- 单元测试
    1.单元测试(UnitTesting):是对软件中的最小可测试单元进行检查和验证。单元是构造软件系统的基础,只有使每个单元都得到足够的测试,系统的质量才能有可靠的保证,即单元测试是构筑产品质量的基石。 不能把单元测试任务堆积到系统测试阶段,否则大量故障堆积在项目中后期,项目后10%的......
  • [渗透测试]—7.4 逆向工程和二进制破解技术
    在本章节中,我们将深入学习逆向工程和二进制破解技术。我们将尽量详细、通俗易懂地讲解,并提供尽可能多的实例。1.1逆向工程概述逆向工程是指从软件的二进制文件中提取信息,以了解其工作原理和设计思路的过程。逆向工程的主要目的是对软件进行分析、调试、修改等操作,以实现特定目......
  • redirect-django-url-with-javascript
    https://www.appsloveworld.com/django/100/279/redirect-django-url-with-javascriptscore:3AcceptedanswerYoucanusethis:window.location.href="{%url'app:result'%}" score:1djangotemplatetagsworkinsidethedjangotem......