Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
阿正 4832af451c | 8 months ago | |
---|---|---|
.gitee | 4 years ago | |
WebUIAutoTest | 2 years ago | |
other | 2 years ago | |
.gitignore | 3 years ago | |
LICENSE | 4 years ago | |
README.en.md | 4 years ago | |
README.md | 8 months ago |
使用Python+Selenium+第三方库实现WebUI自动化测试框架。
AutoIt
: 操作界面ui的第三方插件Config
: 配置文件Data
: 测试数据Drivers
: 浏览器驱动Elements
: 页面定位元素Log
: 测试运行时生成日志存放的目录Report
: 执行结束后生成报告存放的目录src
: 项目源码TestCases
: 存放测试用例集、测试用例生成的数据(用例中做数据比对时生成).flaskenv
: FlaskWeb环境变量配置export_package_info.bat
: 导出当前环境下所有第三方库信息package_info.txt
: 当前环境下所有第三方库信息requirements.txt
: 依赖第三方库明细automation.data
: 自动化测试运行数据runtest.bat
: 启动并执行案例(执行runtest.py
)runtest.py
: 启动脚本stoptest.bat
: 停止案例执行(执行stoptest.py
)stoptest.py
: 停止脚本runserver.bat
: 网页启动脚本(执行webserver.py
)webserver.py
: 网页启动脚本TestCases\test_案例_1.py
用例举例TestCases
目录中,该目录存放所有自动化测试案例pip install -r requirements.txt
安装第三方库(requirements.txt
文件在项目目录下)Drivers
目录(谷歌:chromedriver.exe, 火狐:geckodriver.exe).flaskenv
文件,当部署生产环境时,需要将该文件中的配置FLASK_ENV=production
FLASK_DEBUG=0
,FLASK_ENV=development
FLASK_DEBUG=1
admin/admin
,可以直接登录使用。用户信息存在数据库WebUIAutoTest\src\web\app\app.db
的main.user
表中,from werkzeug.security import generate_password_hash
方法提供加密算法加密,密码设置为明文会无法校验通过。Config/config.ini
文件EMAIL
选择项中配置系统管理员的SMTP邮箱服务,smtp_login_name
, smtp_login_passwd
, sender_address
, smtp_server_address
, smtp_port
, smtp_ssl
, smtp_tls
)WebUIAutoTest\src\web\app\logs\webserver.log
中,可以查看相关报错日志信息WebUIAutoTest\Log
目录中,可以查看自动化运行过程中日志信息(自动化构建日志也可以通过Web页面中日志菜单查看)支持常用的鼠标操作(鼠标移动拖拽、左键右键中键点击、滚轮滚动...)
支持对windows窗口操作(获取窗口句柄、关闭窗口、检测窗口存在、检测是否被激活、激活指定窗口)
支持调用.au3脚本
示例:
from src import Operate
from src import run_autoit
Operate.mouse_move(100, 100) # 移动鼠标到指定位置
run_autoit("UpLoadFile.au3") # 执行"文件上传.au3“脚本
支持在执行完某一场景后对数据库表进行比对
支持MySql与Oracle
示例:可查看WebUIAutoTest\TestCases\test_dbcheck_demo.py
每次执行完被装饰的场景后都会执行该条语句进行数据比对。
*期望数据.xlsx与*执行结果.xlsx都在当前案例目录中,执行完比对后会生成一份比较结果文件。而且当比对失败后也会在报告中提示出来。
注意:当第一次执行时由于没有期望数据,不会成功比较,可以将第一次执生成的实际结果文件改成期望数据(修改文件名[执行结果]改为[期望数据])。第二次执行时就可作为期望数据进行比对。
...
from src import test_dbcheck
...
class DBCheckDemo(TestCaseMore):
@classmethod
def setUpClass(cls):
pass
@classmethod
def tearDownClass(cls):
pass
@test_dbcheck(sql="select * from dbuser.tablename;")
def test_1_dbcheck(self):
pass
# do something
...
支持数据文件来驱动场景的执行
示例:可查看WebUIAutoTest\TestCases\test_datadriver_demo.py
...
from src import DataDriver
...
class DataDriverDemo(TestCaseMore):
def test_datadriver(self):
# 调用被数据驱动的方法do_something(), 会根据文件每遍历一行数据调用一次do_something(),参数会根据列名将数据自动传入
self.do_something()
@DataDriver.run_date_from_csv(path=Config.projectDir + r"\Data\data.csv")
def do_something(self, 工号, 姓名, 年龄):
# 执行
pass
...
数据文件(data.csv)
工号,姓名,年龄
1001,张三,21
1002,李四,28
1003,王五,24
支持同时并发执行多个用例
并发执行案例的配置是通过在“测试案例场景.xlsx”中添加多个Sheet页案例来管理,每个sheet页会单独起一个进程来执行里面的案例。比如\Config\测试案例场景_2.xlsx中配置了3个Sheet页,那么在执行时会同时起3个进程分别执行每个Sheet页里面案例。
注意:通过web页面进行构建时暂不支持并发执行
支持用户添加插件拓展案例中可调用方法
插件所在目录为WebUIAutoTest\src\extension
目录下默认有一个data_util.py
文件,里面定义了一个类DataUtil
,方法func1
定义在该类中。
这样我们就可以在案例中使用 "self.func1(*args, **kwargs)"格式调用插件中的方法
class Test_Demo(TestCaseMore): # 要继承TestCaseMore
...
def test_method_demo(self):
logger.info("正在执行 Test_Demo.test_method_demo")
...
self.func1(*args, **kwargs) # 调用插件中的方法
...
...
需要注意的是,如果插件中定义的方法或属性与TestCaseMore类及其父类方法或属性重名,则会有警告日志提示该方法或属性重名。
当然也可以在WebUIAutoTest\src\extension
添加自己的py文件作为插件,data_util.py
仅作为示例。
src/web/app/celery.py
中配置,如下。通过字典数据格式可以配置多个定时任务,其中scheduel
项配置可参考文档celery.schedules.crontab
celery.conf.beat_schedule = {
'run-once-every-day': {
# 执行tasks下的run_test函数
'task': 'src.web.app.tasks.run_test',
# 每天指定时间执行一次
'schedule': crontab(minute='30', hour='0'),
# 传递参数
# 'args': ('a',)
},
}
celery_worker_server_start.bat
和celery_beat_start.bat
Log/celery_worker_server.log
和Log/celery_beat.log
中查看作者联系方式
- 邮箱: zhangzheng527@outlook.com
- QQ交流群: 977134581
相关项目
- ApiAutomationTest (接口自动化平台)
No Description
JavaScript Python CSS SVG other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》