目录
一、selenium、unittest简介
二、环境搭建
1、安装selenium库
2、安装unittest2框架
3、安装浏览器驱动
三、编写规则
1、测试类
2、以test开头
3、setup和teardown
4、如何让多个用例共享setup、teardown
5、setUp中实现用例之间共享变量
6、如何实现参数化
7、如何跳过用例
8、常用的断言方法
【selenium+unittest自动化测试(一)---环境搭建及用例编写规则】9、如何运行测试用例
10、示例
一、selenium、unittest简介 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。
unittest是单元测试框架,不仅适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,断言,其实就是对测试结果进行校验。
二、环境搭建
1、安装selenium库
首先要准备好python环境,然后在此基础上安装selenium库,安装命令:
pip install selenium
文章图片
2、安装unittest2框架
安装命令:pip install unittest2
3、安装浏览器驱动
chromedriver下载地址:http://npm.taobao.org/mirrors/chromedriver/
我的chrom浏览器是76.0.38.09.132(64位)版本的,经过测试chromedriver76.0.3809.126版本能够正常使用。
文章图片
文章图片
三、编写规则
1、测试类
编写测试用例时,我们需要编写一个测试类,从unittest.TestCase继承。
2、以test开头
以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。
3、setup和teardown
可以在单元测试中编写两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。
4、如何让多个用例共享setup、teardown
unittest的setup、teardown会在每个用例执行前后各执行一次。如果只需执行一次,可以使用setupclass, teardownclass,注意@classmethod的使用。
5、setUp中实现用例之间共享变量
setupclass里设置globals().[“xxx”]变量,不同用例之间可以实时共享参数变动
setupclass里设置 ClassName.XXX变量,不同用例之间可以实时共享参数变动
6、如何实现参数化
@parameterized.expend([
param("sss"),
])
7、如何跳过用例
@unittest.skip(reason)
@unittest.skipif(condition, reason)
@unittest.skipUnless(condition, reason)
@unittest.expectedFailure
8、常用的断言方法
assertTrue
assertEqual
9、如何运行测试用例
python -m unittest Web_check.py
10、示例
import unittest2
import selenium import webdriver
from parameterized import parameterized,paramclass webcheck(unittest2.TestCase):
"""界面登录测试"""
@classmethod
def setUp(cls):
# 打开浏览器
cls.driver = webdriver.Chrome()
# 将浏览器设置为占满整个屏幕
cls.driver.maxmize_window()
#访问网页
cls.driver.get('https://xxx')@parameterized.expand([
param("hillwill_wxt", "123456")
])
def test_openit(self, user, password):
# 找到name为userName的元素,并输入用户名hillwill_wxt
self.driver.find_element_by_name("userName").send_keys(user)
# 找到name为password的元素,并输入密码123456
self.driver.find_element_by_name("password").send_keys(password)
# 点击登录按钮
self.driver.find_element_by_xpath("//*[@id='app']/div[2]/div/ng-include/div/div/div/form/div[2]/button").click()@classmethod
def tearDown(cls):
cls.driver.close()if __name__=='__main__':
unittest2.main()
推荐阅读
- MAC下使用selenium躲过亚马逊反爬虫机制
- 使用selenium实现爬取BOSS直聘职位并写入数据库案例
- Selenium中的自动化(页面对象模型和页面工厂)
- Selenium WebDriver-WebElement命令用法图解
- Selenium WebDriver-在Safari浏览器上运行测试
- Selenium WebDriver与Selenium RC详细介绍
- Selenium WebDriver-滚动网页示例
- Selenium WebDriver-在IE浏览器上运行测试
- Selenium WebDriver-Firefox浏览器运行测试-Gecko驱动程序