All Projects → yanchunhuo → Automationtest

yanchunhuo / Automationtest

自动化测试,支持接口自动化、WEB UI自动化、APP UI自动化、性能测试

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Automationtest

java-e2e-test-example
An complete example of a pipeline focusing on API and UI (mobile and web) tests.
Stars: ✭ 18 (-89.47%)
Mutual labels:  selenium, appium, automated-testing
Atata
C#/.NET test automation framework for web
Stars: ✭ 362 (+111.7%)
Mutual labels:  selenium, automated-testing
Testowanieoprogramowania
Testowanie oprogramowania - Książka dla początkujących testerów
Stars: ✭ 146 (-14.62%)
Mutual labels:  selenium, appium
Qxf2 Page Object Model
Write Selenium and Appium tests in Python using the Page Object pattern. This Pythonic GUI and API test automation framework will help you get started with QA automation quickly. It comes with many useful integrations like - email, BrowserStack, Slack, TestRail, etc. This repository is developed and maintained by Qxf2 Services (https://qxf2.com).
Stars: ✭ 155 (-9.36%)
Mutual labels:  selenium, appium
easyium-python
easyium is an easy-to-use wrapper for selenium&appium and it can make you more focus on business not the element.
Stars: ✭ 13 (-92.4%)
Mutual labels:  selenium, appium
teasy
Test easy with Teasy - UI automation testing framework
Stars: ✭ 27 (-84.21%)
Mutual labels:  selenium, automated-testing
Appium Template
Appium template for android testing training
Stars: ✭ 5 (-97.08%)
Mutual labels:  appium, automated-testing
autotest-framework
UI自动化测试框架,支持APP、Web、HTML5三端, 基于SpringBoot框架, 采用Page Object设计模式,基于 TestNG 测试框架构建测试用例,支持消息通知、失败截屏、HTTP 报告、并发执行等特性
Stars: ✭ 98 (-42.69%)
Mutual labels:  selenium, appium
Java.appium
Mobile test automation using Appium in Java
Stars: ✭ 59 (-65.5%)
Mutual labels:  selenium, appium
Sillynium
Automate the creation of Python Selenium Scripts by drawing coloured boxes on webpage elements
Stars: ✭ 100 (-41.52%)
Mutual labels:  selenium, automated-testing
Frameworkium Core
Framework for writing maintainable Selenium and REST API tests in Java.
Stars: ✭ 107 (-37.43%)
Mutual labels:  selenium, appium
Qaf
Quality Automation Framework for web, mobileweb, mobile native and rest web-service using Selenium, webdrier, TestNG and Java Jersey
Stars: ✭ 150 (-12.28%)
Mutual labels:  selenium, appium
MAQS
Magenic's automation quick start
Stars: ✭ 46 (-73.1%)
Mutual labels:  selenium, appium
sahagin-java
Sahagin generates highly readable Selenium/Appium test report from your test code.
Stars: ✭ 26 (-84.8%)
Mutual labels:  selenium, appium
carina-demo
Carina demo project.
Stars: ✭ 40 (-76.61%)
Mutual labels:  selenium, appium
Carina
Carina automation framework: Web, Mobile, API, DB
Stars: ✭ 549 (+221.05%)
Mutual labels:  selenium, appium
Unium
Automation for Unity games
Stars: ✭ 132 (-22.81%)
Mutual labels:  selenium, appium
Selenium-Foundation
Selenium Foundation is an automation framework designed to extend and enhance the capabilities provided by Selenium (WebDriver).
Stars: ✭ 51 (-70.18%)
Mutual labels:  selenium, appium
java-opensdk
TestProject Java OpenSDK
Stars: ✭ 45 (-73.68%)
Mutual labels:  selenium, appium
Appium Selenium Starter
Open source, complete and easy to use QA Automation platform
Stars: ✭ 30 (-82.46%)
Mutual labels:  selenium, appium

avatar

自动化测试

概况

使用

一、环境准备

1、脚本运行环境准备

1.1、安装python依赖模块

  • pip3 install -r requirements.txt
1.1.1、安装xmind-sdk-python

1.2、安装allure

1.3、安装openjdk8或jdk8

  • sudo add-apt-repository ppa:openjdk-r/ppa
  • sudo apt-get update
  • sudo apt-get install openjdk-8-jdk

1.4、安装maven

  • 完成maven的安装配置

1.5、安装Oracle Instant Client

  • Linux
    • 安装libaio包
      • centos:yum install libaio
      • ubuntu:apt-get install libaio1
    • 配置Oracle Instant Client
      • 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

      • 下载安装包instantclient-basic-linux.x64-18.3.0.0.0dbru.zip

      • 解压zip包,并配置/etc/profile

        • unzip instantclient-basic-linux.x64-18.3.0.0.0dbru.zip
        • export LD_LIBRARY_PATH=/home/john/oracle_instant_client/instantclient_18_3:$LD_LIBRARY_PATH
      • 中文编码设置

        import os
        os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
        
  • Windows
    • 下载地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html
    • 下载安装包instantclient-basic-windows.x64-11.2.0.4.0.zip
    • 解压zip包,并配置环境变量
      • 系统环境变量加入D:\instantclient-basic-windows.x64-11.2.0.4.0\instantclient_11_2
      • 配置中文编码,环境变量创建NLS_LANG=SIMPLIFIED CHINESE_CHINA.UTF8
    • 注意:如果使用64位,python和instantclient都需要使用64位

1.6、图像识别字库准备

2、selenium server运行环境准备

2.1、安装jdk1.8,并配置环境变量

  • export JAVA_HOME=/usr/lib/jvm/jdk8
  • export JRE_HOME=${JAVA_HOME}/jre
  • export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  • export PATH=${JAVA_HOME}/bin:$PATH

2.2、安装配置selenium

  • 配置selenium server
  • 下载浏览器驱动
  • IE浏览器设置
    • 在Windows Vista、Windows7系统上的IE浏览器在IE7及以上版本中,需要设置四个区域的保护模式为一样,设置开启或者关闭都可以。
      • 工具-->Internet选项-->安全
    • IE10及以上版本增强保护模式需要关闭。
      • 工具-->Internet选项-->高级
    • 浏览器缩放级别必须设置为100%,以便本地鼠标事件可以设置为正确的坐标。
    • 针对IE11需要设置注册表以便于浏览器驱动与浏览器建立连接
      • Windows 64位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
      • Windows 32位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE
      • 如果FEATRUE_BFCACHE项不存在,需要创建一个,然后在里面创建一个DWORD(32位),命名为iexplore.exe,值为0
      • Windows 64位两个注册表建议都设置
    • IE8及以上版本设置支持inprivate模式,以便多开IE窗口时cookies能够独享
      • HKKY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main 下建一个名为TabProcGrowth的DWORD(32位),值为0
    • 重启系统
    • 注:https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver#required-configuration

3、appium server运行环境准备

3.1、安装jdk1.8,并配置环境变量

  • export JAVA_HOME=/usr/lib/jvm/jdk8
  • export JRE_HOME=${JAVA_HOME}/jre
  • export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  • export PATH=${JAVA_HOME}/bin:$PATH

3.2、安装配置appium server

二、修改配置

  • vim config/app_ui_config.conf 配置app ui自动化的测试信息
  • vim config/web_ui_config.conf 配置web ui自动化的测试信息
  • vim config/projectName/projectName.conf 配置测试项目的信息
  • 修改性能测试负载机的系统最大打开文件数,避免并发用户数大于最大打开文件数

三、运行测试

1、API测试

  • cd AutomationTest/
  • python3 -u run_api_test.py --help
  • python3 -u run_api_test.py 运行cases/api/目录所有的用例
  • python3 -u run_api_test.py -k keyword 运行匹配关键字的用例,会匹配文件名、类名、方法名
  • python3 -u run_api_test.py -d dir 运行指定目录的用例,默认运行cases/api/目录
  • python3 -u run_api_test.py -m mark 运行指定标记的用例

2、web ui测试

  • cd AutomationTest/
  • python3 -u run_web_ui_test.py --help
  • python3 -u run_web_ui_test.py 运行cases/web_ui/目录所有的用例
  • python3 -u run_web_ui_test.py -k keyword 运行匹配关键字的用例,会匹配文件名、类名、方法名
  • python3 -u run_web_ui_test.py -d dir 运行指定目录的用例,默认运行cases/web_ui/目录
  • python3 -u run_web_ui_test.py -m mark 运行指定标记的用例

3、app ui测试

  • cd AutomationTest/
  • python3 -u run_app_ui_test.py --help
  • python3 -u run_app_ui_test.py 运行cases/app_ui/目录所有的用例
  • python3 -u run_app_ui_test.py -tt phone -k keyword 运行匹配关键字的用例,会匹配文件名、类名、方法名
  • python3 -u run_app_ui_test.py -tt phone -d dir 运行指定目录的用例,默认运行cases/app_ui/目录
  • python3 -u run_app_ui_test.py -m mark 运行指定标记的用例

4、性能测试

  • cd AutomationTest/
  • ./start_locust_master.sh
  • ./start_locust_slave.sh

四、生成测试报告

1、API测试

  • cd AutomationTest/
  • python3 -u generate_api_test_report.py -p 9080
  • 访问地址http://ip:9080
  • 在使用Ubuntu进行报告生成时,请勿使用sudo权限,否则无法生成,allure不支持

2、web ui测试

  • cd AutomationTest/
  • python3 -u generateReport_web_ui_test_report.py -ieport 9081 -chromeport 9082 -firefoxport 9083
  • 访问地址http://ip:908[1-3]
  • 在使用Ubuntu进行报告生成时,请勿使用sudo权限,否则无法生成,allure不支持

3、app ui测试

  • cd AutomationTest/
  • python3 -u generateReport_app_ui_test_report.py -sp 9084
  • 访问地址http://ip:9084

注:在使用Ubuntu进行报告生成时,请勿使用sudo权限,否则无法生成,allure不支持

五、项目说明

1、API测试

  • 项目
    • demoProject 例子项目

2、web ui测试

  • 元素的显式等待时间默认为30s
  • 封装的显式等待类型支持:page_objects/web_ui/wait_type.py
  • 封装的定位类型支持:page_objects/web_ui/locator_type.py
  • 默认使用4个worker进行并行测试
  • 文件下载处理暂不支持ie浏览器
  • 无头浏览器暂不支持ie浏览器
  • 项目
    • demoProject 例子项目

3、app ui测试

  • 元素的显式等待时间默认为30s
  • 封装的显式等待类型支持:page_objects/app_ui/wait_type.py
  • 封装的定位类型支持:page_objects/app_ui/locator_type.py
  • 项目
    • android
      • demoProject 例子项目

项目结构

  • base 基础请求类
  • cases 测试用例目录
  • common 公共模块
  • common_projects 每个项目的公共模块
  • config 配置文件
  • init 初始化
  • logs 日志目录
  • output 测试结果输出目录
  • packages app ui测试的安装包
  • page_objects 页面映射对象
  • pojo 存放自定义类对象
  • test_data 测试所需的测试数据目录
  • run_api_test.py 运行api测试脚本
  • run_web_ui_test.py 运行web ui测试脚本
  • run_app_ui_test.py 运行app ui测试脚本
  • generate_api_test_report.py 生成api测试报告
  • generateReport_web_ui_test_report.py 生成web ui测试报告
  • generateReport_app_ui_test_report.py 生成app ui测试报告
  • start_locust_master.sh 启动locust主节点
  • start_locust_slave.sh 启动locust从节点

编码规范

  • 统一使用python 3.6
  • 编码使用-*- coding:utf8 -*-,且不指定解释器
  • 类/方法的注释均写在class/def下一行,并且用三个双引号形式注释
  • 局部代码注释使用#号
  • 所有中文都直接使用字符串,不转换成Unicode,即不是用【u'中文'】编写
  • 所有的测试模块文件都以test_projectName_moduleName.py命名
  • 所有的测试类都以Test开头,类中方法(用例)都以test_开头
  • 每个测试项目都在cases目录里创建一个目录,且目录都包含有api、scenrarios两个目录
  • case对应setup/teardown的fixture统一命名成fixture_[test_case_method_name]
  • 每一个模块中测试用例如果有顺序要求【主要针对ui自动化测试】,则自上而下排序,pytest在单个模块里会自上而下按顺序执行

pytest常用

  • @pytest.mark.skip(reason='该功能已废弃')
  • @pytest.mark.parametrize('key1,key2',[(key1_value1,key2_value2),(key1_value2,key2_value2)])
  • @pytest.mark.usefixtures('func_name')

注意点

  • 运行pytest时指定的目录内应当有conftest.py,方能在其他模块中使用。@allure.step会影响fixture,故在脚本中不使用@allure.step
  • web ui测试
    • 统一使用Firefox浏览器进行元素定位
    • 能用id、name、link(不常变化的链接)定位的,不使用css定位,能使用css定位,不使用xpath定位
    • 项目使用并发运行,故编写测试用例时,应该避免模块与模块直接的用例会相互影响测试结果
  • app ui测试
    • 能用id、name、link(不常变化的链接)定位的,不使用css定位,能使用css定位,不使用xpath定位
    • 如需要上传文件到手机或者从手机下载文件,请确保有手机对应目录的读写权限
    • 视频录制统一对单个单个case进行,保证录制时间不超过3分钟,且录制文件不要过大,否则会引起手机内存无法存储视频 * 确认手机是否能进行视频录制执行命令adb shell screenrecord /sdcard/test.mp4,能正常执行即可
    • 设备屏幕坐标系原点都在最左上角,往右x轴递增,往下y轴递增

打赏

avatar

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].