Selenium 自动化测试方案
基础方案:
使用unittest,主要是用 TestCase(测试用例);
使用模块化(基本的模块化,抽取公共模块);
使用数据驱动的方式(主要包括 数据库的形式 和文件读取 );
定制执行需要测试的用例,使用unittest,主要用的是TestSuite(测试套件)、和 TextTestRunner(文本测试运行器)[或者HTMLTestRunner]
生成测试报告(发送报告到指定邮箱)
方案实现的具体
使用PyCharm创建新的PurePython项目
在项目中创建如下的文件夹(python package)
TestCase
Data
Common
TestRunner
Report
分别实现上述模块
在Data中存放数据,CSV文件,或者也可以放到数据中,使用数据驱动
## 使用csv文件
csv.reader()
## 使用数据库(MySQL),可以参考www.imooc.com的python操作MySQL的视频
cur.fetchall()
在Common中,创建测试公共模块,实现模块化的操作
## __init__(self, driver: webdriver.Firefox, base_url)
self.common = RanzhiCommon(self.driver, self.base_url)
在TestCase创建自动化测试用例,注意使用unittest.TestCase
def setUp()
def tearDown()
det test_xxx()
在TestRunner创建测试执行器和测试套件,使用unittest.TestSuite和HTMLTestRunner(第三方)
test_suite = unittest.TestSuite()
test_suite.addTest(RanzhiLogonTc01("test_xxx"))
html_test_runner = HTMLTestRunner(stream=report_file, title="xxx", description="dddd)
html_test_runner.run(test_suite)
在项目根目录创建main.py,作为测试项目的主入口,运行测试。
检查测试报告
Selenium 可能遇到的问题
框架
f1 = find_element_by_css_selector(frame)
switch_to.frame(f1)
下拉框
s1 = find_element_by_css_selector(select)
ss1 = Select(s1)
ss1.select_by_index(0)
ss1.select_by_value("人事部")
编码问题 utf-8
时间等待问题 sleep(5)
单元测试框架
unittest
unittest.TestCase
前置条件
清理
测试过程步骤
断言 assertEqual(期望值, 实际结果, 错误提示)
运行测试 test_开头的方法
unittest.TestSuite
addTest(xxx("test_batch_login"))
自定义的添加测试用例,并执行
unittest.TextTestRunner
run(suite)
执行创建并维护好的测试套件
test_runner test_suite test_case
测试运行器 测试套件 测试用例
模块化操作:
面向对象的实践:
编写一个类,类里面描述公共的方法;
实例化这个类,调用这个类的方法;
类的构造方法,需要传递 webdriver.Firefox()
self.common = RanzhiCommon(self.browser, self.base_url)
数据驱动测试:
读取csv,循环每一行数据进行操作
读取MySQL,用例存到MySQL中
中文编码的问题
# coding="utf-8"
读csv的时候,添加 encoding=‘utf-8’
csv.reader(open("xxx.csv", "r", –1, encoding="utf-8")
循环放到最外层
文件路径在控制台读取不到的问题,需要用绝对路径来指向文件
封装WebDriver
避免第三方代码的威胁,防止大批量修改测试用例
节约人力的成本(如果封装以后,不需要每个自动化测试工程师都会WebDriver)
标准化自动化用例的操作,只需要调用公共的标准模块就好。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
要想登上人生巅峰,就别让懒惰和畏惧成为阻碍!抛开疑虑,放下束缚,迈出勇往直前的步伐。只有敢于冒险、坚持奋斗,才能创造属于自己的辉煌!
只要心中燃起坚定的火焰,任何挑战都能被征服;不停耕耘,终将收获丰盛的果实;在追求梦想的路上,坚持不懈才是通向成功的唯一途径。
只有拼尽全力,才能超越极限;只有坚持奋斗,才能创造辉煌;只有永不放弃,才能追寻梦想;勇往直前,努力奋斗,让未来的自己感动自己!