• python自动化测试


    0、写在前面

    项目都快搞完了,感觉还是一堆的bug,人工测试还是不靠谱

    意识到测试的重要性,学习下自动化测试

    1、相关库

    selenium:自动化测试框架,需下载需要的浏览器driver,无头浏览器

    unittest:python自带的自动化测试库

    HTMLTestRunner:用于生成报告

    一些坑:

    浏览器和driver的版本必须一致,否则起不来

    必须要通过命令行的方式执行脚本,否则不会生成报告

    2、一个简单的栗子

     1 # -*- coding: utf-8 -*-
     2 import unittest
     3 from selenium import webdriver
     4 import time,os
     5 from HTMLTestRunner import HTMLTestRunner
     6 
     7 
     8 
     9 option = webdriver.ChromeOptions()
    10 #设置浏览器不打开
    11 option.add_argument('headless')
    12 
    13 class TestBaidu(unittest.TestCase):
    14     #执行前
    15     def setUp(self):
    16         self.driver = webdriver.Chrome(chrome_options=option)
    17         self.base_url = 'https://www.baidu.com'
    18 
    19     #test开头的函数自动执行
    20     def test_search(self):
    21         u'''测试百度'''
    22         self.driver.get(self.base_url)
    23         input = self.driver.find_element_by_id('kw')
    24         searchButton = self.driver.find_element_by_id('su')
    25         input.send_keys("Python")
    26         searchButton.click()
    27         time.sleep(2)
    28         self.assertEqual(u'Python_百度搜索',self.driver.title)
    29 
    30     #执行后
    31     def tearDown(self):
    32        self.driver.quit()
    33 
    34 if __name__ == '__main__':
    35     u_test = unittest.TestSuite()
    36     u_test.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBaidu))
    37     #生成报告
    38     wf =  open(os.getcwd()+'/result.html','wb')
    39     runner = HTMLTestRunner(stream=wf,title=u"百度测试报告1",description=u"简单测测")
    40     runner.run(u_test)
    41     wf.close()
    test_baidu.py

    3、po模式和数据驱动

    po模式大概就是为每个页面做个class,做好封装,页面、逻辑、数据、驱动分离开

    数据驱动大概就是同一套代码,不同的数据产生不同的结果来进行测试

    4、实现思路

    base--findElement类,根据配置文件来找元素,把selenium的一些方法封装的更简单一些

    page(页面,找到元素)--handle(操作元素)--business(业务层,执行操作)--case(最后调用)

    page--找到具体元素,输入框、按钮、get_username_ele,get_password_ele,loginPage类

    handle--send_username,send_password等等,loginHandle类

    bussiness--整合起来,login(判断登录成功失败),logout,loginBussiness类

    case--具体测试的代码,按计划记性逐项测试

    大概可以按这样的表格列好后,逐项进行测试

    5、具体实现

    测试登录

  • 相关阅读:
    com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_UPDATE_INCOMPATIBLE:
    vue 使用video.js循环
    微信小程序使用iconfont
    小程序使用可滑动的tab
    vue cli2引入iconfont
    Couldn't find preset "es2015" relative to directory
    Electron桌面应用框架的使用,结合react项目
    如何用Linux重现《黑客帝国》中的经典界面?
    iOS----------证书的制作
    iOS----------charles如何设置本地映射、和取消本地映射
  • 原文地址:https://www.cnblogs.com/cx59244405/p/11632978.html
Copyright © 2020-2023  润新知