[开源分享] 基于 Appium-python3 的移动自动化测试框架 AppiumLich,附相关系列教程
本帖最后由 巴黎的灯光下 于 2017-6-30 14:39 编辑简介
AppiumLich 基于 Appium, python3, Allure.测试case清晰明了,定位元素基于 pageobject的模式,并自动生成 pageobject的相关代码,封装Appium API提供更加实用强大的API.
Link
下面附上几篇学习的系统教程,非常适合新手入门.最后两篇是基于AppiumLich框架的实践.
移动端自动化测试系列之一——Appium环境搭建:http://bbs.51testing.com/thread-1132119-1-1.html
移动端自动化测试系列之二——pytest入门详解:http://bbs.51testing.com/thread-1132120-1-1.html
移动端自动化测试系列之三——Allure测试报告:http://bbs.51testing.com/thread-1132122-1-1.html
移动端自动化测试系列之四——生成定位元素:http://bbs.51testing.com/thread-1132123-1-1.html
移动端自动化测试系列之五——AppiumLich框架使用:http://bbs.51testing.com/thread-1132125-1-1.html
环境要求
Python3:
brew install python3Python3 Package
pip3 install <package> .Appium-Python-Client
.Jinja2
.PyYAML
.pytest
.pytest-allure-adaptor
.watchdog
.termcolor (not needed)
Appium
npm install -g appium
npm install -g appium-doctorappium-doctor to ensure your system is set up properly
Allure-Commandline
Allure Framework is a flexible lightweight multi-language test report tool with the possibility to add screenshots, logs and so on. It provides modular architecture and neat web reports with the ability to store attachments, steps, parameters and many more.
brew tap qatools/formulas
brew install allure-commandline
Run Test
start appium service:
appium --address 127.0.0.1 --port 4723 --log "log_path" --log-timestamp --local-timezone --session-override
run test,
cd project_path
python3 run.pyHtml-Report will be generate on project_path/report/html/index.html
report shot:
http://mio4kon.qiniudn.com/report_shot%E5%89%AF%E6%9C%AC.jpeg
Write Test Case
开启watchdog
cd project_path
python3 watch_dog.py打开 project_path/data/pages.yaml,以下面模板定位元素:
---
LoginPage:
dec: 登录页面
locators:
-
name: 注册
timeOutInSeconds: 20
type: name
value: 注册
写测试case
class TestLogin:
def test_login(self, action: ElementActions):
L.d('test_login')
account = Steps.get_account()
action.click(HomePage.登录入口)
action.text(LoginPage.账户, account)
action.text(LoginPage.密码, account)
action.sleep(1)
action.click(LoginPage.登录)
assert action.is_toast_show('欢迎回来')
TODO
兼容iOS
集成 stf
干货!顶! 请问这是什么用法 方法定义后面带->
谢谢
def get_environment_info(self) -> EnvironmentInfo:
env_path = self.config.env_yaml_path
with open(env_path, 'r') as f:
env_info = yaml.safe_load(f)
return env_info 请教下一个用例有多个检查点时,用这个框架该怎么处理呢?
情况1:检查点A和检查点B是前后顺序,A PASS了才能继续B
情况2:检查点A和B是并行关系 草帽路飞UU 发表于 2017-6-30 16:35
请教下一个用例有多个检查点时,用这个框架该怎么处理呢?
情况1:检查点A和检查点B是前后顺序,A PASS了 ...
如果检查点A,检查点B放在一个test_method的话很简单.A ERROR的话本身就不会执行B.
如果放在两个test_method的话要用到pytest的xfail. 可以分多个pagexx.yaml吗 ? 如果把所有页面元素都写在pages.yaml下 不方便分类维护吧 整个项目过了一遍,楼主很赞。
个人感觉对报告的后续发送处理加上就更好,如把报告的概要(版本、时间、通过项数)通过post http发送出去(例如微信公众号api),这样闭环之后,在实际工作使用中更好点。 源码在哪里啊?
页:
[1]