自动化测试seleunim

(一)测试定义
  • 软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。
      1、单元测试  
      单元测试即为将整个软件分解为各个功能,随后对单元进行测试,此类测试策略的优点在于所需分析数据较少,且针对性较强,程序开发者于开发过程中可通过操作经验明确出现问题的大致区域,随后针对此类问题对相关单元展开分析,进行问题排查。但需注意的是,某些程序中无具体单元驱动程序,即单个单元无法有效驱动,易出现问题,若针对此类软件展开测试,需重点注意此类分解单元。
      2、集成测试
      集成测试与单元测试相反,原理为将部分需测试部分作为整体进行集成,随后针对此类集成部分进行测试。测试要求为此类被测试集成题应具有一定的结构,且属于非渐增方式集成。对于较大软件而言,集成测试方式较单元测试方式而言较为繁琐,目前多数大型软件的测试皆采取渐增方式进行测试。渐增测试方式为集成测试方式的衍生,其能够按照不同次序对软件进行测试,日常测试中,常将两类方式进行集成测试,随后按照次序展开选择。
      3、黑盒测试
      黑盒测试,顾名思义即为将软件测试环境模拟为不可见的“黑盒”。通过数据输入观察数据输出,检查软件内部功能是否正常。测试展开时,数据输入软件中,等待数据输出。数据输出时若与预计数据一致,则证明该软件通过测试,若数据与预计数据有出入,即便出入较小亦证明软件程序内部出现问题,需尽快解决。
      4、白盒测试
      白盒测试相对于黑盒测试而言具有一定透明性,原理为根据软件内部应用、源代码等对产品内部工作过程进行调试。测试过程中常将其与软件内部结构协同展开分析,最大优点即为其能够有效解决软件内部应用程序出现的问题,测试过程中常将其与黑盒测试方式结合,当测试软件功能较多时,白盒测试法亦可对此类情况展开有效调试。其中,判定测试作为白盒测试法中最为主要的测试程序结构之一,此类程序结构作为对程序逻辑结构的整体实现,对于程序测试而言具有较为重要的作用。此类测试方式针对程序中各类型的代码进行覆盖式检测,覆盖范围较广,适用于多类型程序。实际检测中,白盒测试法常与黑盒检测法并用,以动态检测方式中测试出的未知错误为例,首先使用黑盒检测法,若程序输入数据与输出数据相同,则证明内部数据未出现问题,应从代码方面进行分析,若出现问题则使用白盒测试法,针对软件内部结构进行分析,直至检测出问题所在,及时加以修改。
(二)Python单元测试模块-unittest

断言定义
   编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

#断言 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。
#assert代表断言,假设断言的条件为真,如果为假诱发AssertionError
#assert 断言的条件,错误的提升
a = 0
assert a,"a is false"
print(a)
#上面的断言代码类似下面的if语句
a = 1
if not a:
    raise AssertionError("a is false")
print(a)

断言的优势
 1、编写防御性代码
 2、起到特殊的注释作用
  TestCase(测试用例): 所有测试用例的基类,它是软件 测试中最基本的组成单元。一个test case就是一个测试用例,是一个完整的测试流程,包括测试前环境的搭建setUp,执行测试代码(run),以及测试后环境的还原(tearDown)。测试用例是一个完整的测试单元,可以对某一问题进行验证。
  TestSuite(测试套件):多个测试用例test case集合就是TestSuite,TestSuite可以嵌套TestSuite
  TestLoder:是用来加载 TestCase到TestSuite中,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建他们的实例,然后add到TestSuite中,再返回一个TestSuite实例
  TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
   TextTestResult:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息
    TestFixture:又叫测试脚手,测试代码的运行环境,指测试准备前和执行后要做的工作,包括setUp和tearDown方法

mport unittest
#unittest使用的方法
class OurTest(unittest.TestCase):
    """
    继承编写测试的基础类
    """
    def setUp(self):
        """
        类似于类的init方法,在测试执行之初制动执行,通常用来做测试数据的准备
        """
    def test_add(self):
        """
        具体测试的方法,使用testcase编写具体测试的方法,函数名称必须以test开头
        函数当中的内容通常是获取预期值,和运行结果值
        然后对两个值进行断言
        """
    def tearDown(self):
        """
        类似类的del方法,用来回收测试的环境
        """
        if __name__ == "__main__":
       unittest.main()

Unittest小例子

import unittest

#举个栗子
class OurTest(unittest.TestCase):
    """
    继承编写测试的基础类
    """
    def setUp(self):
        """
        类似于类的init方法,在测试执行之初制动执行,通常用来做测试数据的准备
        """
        self.a = 1 #测试使用的参数1
        self.b = 1 #测试使用的参数2
        self.result = 3 #预期的结果
    def test_add(self):
        """
        具体测试的方法,使用testcase编写具体测试的方法,函数名称必须以test开头
        函数当中的内容通常是获取预期值,和运行结果值
        然后对两个值进行断言
        unittest模块已经封装好了更多的断言方法
        """
         run_result = self.a + self.b
        self.assertEqual(run_result,self.result,"self.a+self.b不等于3") #断言两个值相等
    def tearDown(self):
        """
        类似类的del方法,用来回收测试的环境
        """

if __name__ == "__main__":
    unittest.main()

Unitest常用的断言方法
断言方法 断言描述
assertEqual(arg1, arg2, msg=None) 验证arg1=arg2
assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2
assertTrue(expr, msg=None) 验证expr是true,如果为false
assertFalse(expr,msg=None) 验证expr是false,如果为true
assertIs(arg1, arg2, msg=None) 验证arg1、arg2是同一个对象
assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象
assertIsNone(expr, msg=None) 验证expr是None
assertIsNotNone(expr, msg=None) 验证expr不是None
assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串
assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串
assertIsInstance(obj, cls, msg=None) 验证obj是cls的实例
ssertNotIsInstance(obj, cls, msg=None) 验证obj不是cls的实例

(三)Python web自动化测试模块-selenium
  • Selenium 本来就是web功能测试的一个很棒的工具,之前和python没有关系,
      后来python编写调用selenium的模块。使用python可以驱动selenium然后驱动 浏览器内核进行浏览器控制,所有selenium通常用于自动化测试和爬虫两个方向 的代码。
      Selenium在python当中是一个三方模块,安装需要先安装selenium模块,然后安 装对应的浏览器模块
    安装需要先安装selenium模块
    在这里插入图片描述

安装chrome的驱动
http://npm.taobao.org/mirrors/chromedriver/
首先对应版本
在这里插入图片描述
在这里插入图片描述
ChromeDriver 76.0.3809.12 (2019-06-07)---------Supports Chrome version 76
ChromeDriver 75.0.3770.8 (2019-04-29)---------Supports Chrome version 75
ChromeDriver v74.0.3729.6 (2019-03-14)--------Supports Chrome v74
ChromeDriver v2.46 (2019-02-01)----------Supports Chrome v71-73
ChromeDriver v2.45 (2018-12-10)----------Supports Chrome v70-72
ChromeDriver v2.44 (2018-11-19)----------Supports Chrome v69-71
ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71
ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70
ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69
ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68
ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68
ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67
ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66
ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65
ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
在这里插入图片描述
将驱动放到一个配置了path环境变量的目录当中
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值