巴黎的灯光下 发表于 2017-6-30 14:37:58

[开源分享] 基于 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

Real_小T 发表于 2017-6-30 16:08:04

干货!顶!

悠悠小仙仙 发表于 2017-6-30 16:34:36

请问这是什么用法 方法定义后面带->
谢谢
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

草帽路飞UU 发表于 2017-6-30 16:35:30

请教下一个用例有多个检查点时,用这个框架该怎么处理呢?
情况1:检查点A和检查点B是前后顺序,A PASS了才能继续B
情况2:检查点A和B是并行关系

巴黎的灯光下 发表于 2017-6-30 16:36:00

草帽路飞UU 发表于 2017-6-30 16:35
请教下一个用例有多个检查点时,用这个框架该怎么处理呢?
情况1:检查点A和检查点B是前后顺序,A PASS了 ...

如果检查点A,检查点B放在一个test_method的话很简单.A ERROR的话本身就不会执行B.
如果放在两个test_method的话要用到pytest的xfail.

乐哈哈yoyo 发表于 2017-6-30 16:36:39

可以分多个pagexx.yaml吗 ? 如果把所有页面元素都写在pages.yaml下 不方便分类维护吧

小皮球的故事 发表于 2017-6-30 16:37:40

整个项目过了一遍,楼主很赞。
个人感觉对报告的后续发送处理加上就更好,如把报告的概要(版本、时间、通过项数)通过post http发送出去(例如微信公众号api),这样闭环之后,在实际工作使用中更好点。

51sheng 发表于 2018-8-8 14:21:00

源码在哪里啊?
页: [1]
查看完整版本: [开源分享] 基于 Appium-python3 的移动自动化测试框架 AppiumLich,附相关系列教程