精华内容
下载资源
问答
  • IOS appium自动化测试python脚本
  • /usr/bin/python3#-*- coding: utf-8 -*-importos, sys, time, logging#下列时间单位均为秒#执行时间exec_time = 15 * 60 * 60 #10 hours, 可改成60s供测试脚本#记录内存间隔时间,exec_time/exec_interval + 1 ...

    #! /usr/bin/python3#-*- coding: utf-8 -*-

    importos, sys, time, logging#下列时间单位均为秒#执行时间

    exec_time = 15 * 60 * 60 #10 hours, 可改成60s供测试该脚本#记录内存间隔时间,exec_time/exec_interval + 1 即为记录内存次数

    exec_interval = 10 #10 s#导出hprof文件间隔

    dump_interval = 60 * 60 #1 hour, 可改成30s供测试该脚本

    time_passed=0#打印提示间隔次数,以查看当前进度

    print_interval = 1packageName= "com.android.systemui"bulid_type= ""

    #所有产生文件的输出目录,必须指定且存在#OUTPUT_DIR = os.path.join(os.path.expanduser('~'), "test") # 目录"~/test"

    OUTPUT_DIR = os.path.join('d:\\', '\\tools\\tmp\\') #目录"D:\tools\tmp"

    logger= logging.getLogger('memoryleak')

    FILE_LOG=True

    LOG_LEVEL=logging.DEBUGdefinit_logger():

    logger.setLevel(LOG_LEVEL)#create formatter

    #[%(filename)s:%(lineno)d] 代码位置,暂不配

    log_format = logging.Formatter("%(asctime)s %(name)s %(levelname)-8s: %(message)s")defadd_ch():#create console handler and set level to debug

    ch =logging.StreamHandler()

    ch.setLevel(LOG_LEVEL)

    ch.setFormatter(log_format)#add handler to logger

    logger.addHandler(ch)defadd_fh():

    logfile= os.path.join(OUTPUT_DIR, "memoryleak_" + time.strftime('%Y%m%d%H%M%S') + ".log")

    fh=logging.FileHandler(logfile)

    fh.setLevel(LOG_LEVEL)

    fh.setFormatter(log_format)

    logger.warning('log will be outputed to console and file:[%s]' %logfile)

    logger.addHandler(fh)

    add_ch()if not (OUTPUT_DIR and os.path.isdir(OUTPUT_DIR) andos.access(OUTPUT_DIR, os.W_OK)):

    logger.error('OUTPUT_DIR:' + OUTPUT_DIR + 'not exist or not writable, please check it up, exiting...')

    sys.exit(-1)ifFILE_LOG:

    add_fh()defstart_monkey():#adb shell monkey -p com.gionee.filemanager --throttle 800 -v -v 300

    command = "adb shell monkey -p" +packageName

    command+= "--ignore-crashes"command+= "--ignore-timeouts"command+= "--ignore-security-exceptions"command+= "--ignore-native-crashes"command+= "--monitor-native-crashes"command+= "--throttle 800"command+= "-v -v 1000000"command+= ">" + os.path.join(OUTPUT_DIR, "monkeytest.log")

    logger.info("插入monkey命令:" +command)

    os.popen(command)defrecord_memory():globaltime_passedif "eng" inbulid_type:

    memfile= os.path.join(OUTPUT_DIR, 'procrank.txt')#第一次执行命令

    command = 'adb shell \"procrank | grep' + packageName + '\|cmdline' + '>' +memfile#后续执行命令

    commandOther = 'adb shell \"procrank | grep' + packageName + '>>' + memfile + "\""

    else:

    memfile= os.path.join(OUTPUT_DIR, "meminfo.txt")

    command= 'adb shell \"dumpsys meminfo' + packageName +\'| grep "Dalvik Heap" -A 14 -B 4 | grep -ie Private -ie Tota\"' + '>' +memfile

    commandOther= 'adb shell \"dumpsys meminfo' + packageName + '| grep TOTAL -m 1\"' + '>>' +memfile

    exec_count= exec_time // exec_interval + 1logger.info("开始记录内存信息,待记录次数:" +str(exec_count))for i inrange(exec_count):

    os.popen(command)#运行命令

    #执行初始命令后切换为后续命令

    if i ==0:

    command=commandOtherif i % print_interval ==0:

    logger.info("当前记录内存次数:" +str(i))if (time_passed) % dump_interval ==0:

    logger.info("当前dump hprof次数:" + str(time_passed //dump_interval))

    dumpheap(str(time_passed//dump_interval))

    time_passed+=exec_interval

    time.sleep(exec_interval)#休息n秒,再进入下一个循环,也就是每隔n秒打印一次procrank的信息

    logger.info("记录内存信息结束") #运行完毕的标志

    defdumpheap(name):

    command= "adb shell \"am dumpheap" + packageName + "/data/local/tmp/hprofs/\""command+= "count" + name + ".hprof"os.popen(command)defstop_monkey():#adb shell kill -9 `adb shell ps | grep com.android.commands.monkey | awk '{print $2}'`

    pid = os.popen("adb shell \"ps | grep monkey | awk '{print $2}'\"").read()

    pid= pid.replace("\n", "")

    logger.info("monkey pid is:" + pid + ", kill it")

    os.system("adb shell kill" +pid)defcopyheap():

    logger.info("开始导出hprof文件...")

    os.system("adb pull /data/local/tmp/hprofs/" +OUTPUT_DIR)

    os.system("adb shell rm -r /data/local/tmp/hprofs")

    logger.info("导出hprof文件结束")#Ensure in eng release or seleted app has flag android:debuggable="true"

    defcheck_env():globalbulid_type

    bulid_type_prop= os.popen("adb shell \"getprop | grep ro.build.type\"").read()

    logger.info("当前rom版本信息 :" +bulid_type_prop)if "eng" inbulid_type_prop:

    bulid_type= "eng"logger.info("当前rom版本: eng")elif "userdebug" inbulid_type_prop:

    bulid_type= "userdebug"logger.info("当前rom版本: userdebug")else:

    bulid_type= "user"logger.info("当前rom版本: user")

    package_flags= os.popen("adb shell \"dumpsys package" + packageName + "| grep pkgFlags=\"").read()if "DEBUGGABLE" not inpackage_flags:

    logger.info("当前为user版本且应用没有设置android:debuggable=\"true\", 无法导出内存信息, 请确认环境。")

    sys.exit(-1)#清空及建立hprof文件存放目录

    if 'hprofs' in os.popen('adb shell ls /data/local/tmp').read():

    logger.info('在设备中清除上次运行产生的临时目录"/data/local/tmp/hprofs"...')

    os.system("adb shell rm -r /data/local/tmp/hprofs")

    logger.info('在设备中新建临时目录"/data/local/tmp/hprofs"...')

    os.system("adb shell mkdir -p /data/local/tmp/hprofs")defmain():

    init_logger()

    check_env()

    start_monkey()#循环进行,程序主体

    record_memory()

    stop_monkey()

    copyheap()if __name__ == '__main__':

    main()

    展开全文
  • python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口自动化测试python 接口...
  • 今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和返回报文中的值一致,将测试...

    今天给大家分享一个简单的python脚本,使用python进行http的接口测试,脚本很简单,逻辑是:读取excel写好的测试用例,然后根据excel中的用例内容进行调用,判断预期结果中的返回值是否和返回报文中的值一致,将测试结果写入新的excel中。

    实现步骤:

    1、读取excel,保存测试用例中的内容;

    2、根据excel中的请求url和参数拼接请求报文,调用接口,并保存返回报文;

    3、读取返回报文,和预期结果对比,并且把请求报文、返回报文和测试结果写到测试用例的excel中,这里我没有写测试结果往数据库中写入以后补充。

    http接口最常用的两种请求方式,POST和GET两种方法,请求都是类似下面例子的url。

    例子:http://192.168.1.102:8088/login_values?username=ximingshi&password=666

    接口开发不在这里阐述了,需开发一个通用的可以接收不同方式传参的接口即可,这里我用python已经做好了一个接口,那么我们现在开始。

    需要用的到几个模块,requests、xlrd(读取excel)、xlutils(写excel)、MySQLdb(连接数据库)这四个模块都是第三方模块,需要自己单独安装,用到的一些python中的方法和内置函数也都做了说明,本文使用的python版本是python3.5.2。

    首先需写好excel的用例模板,需要有的字段 项目、用例id、接口名称、用例描述、请求方式、url请求地址、请求参数(多个的参数话用;分号隔开)、结果验证(多个的参数话用;分号隔开)、请求报文、返回报文、测试人员、测试结果

    整体代码如下,注释加的很详细了,有不明白的可以给我留言

    start_all_test.py

    res_msg.py   没截全自己补全

    setting.py

    op_db.py

    read_excel.py

    run_case.py

    send_email.py

    注释:bin: 运行用例   conf:信息配置    core:获取数据   data: 存放所有的测试用例文档

    展开全文
  • 最近在学web自动化,记录一下学习过程。此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求。环境:windows10,64位一、安装pythonpython官方下载地址:https://www.python.org/downloads/进入页面就有...

    最近在学web自动化,记录一下学习过程。

    此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求。

    环境:windows10,64位

    一、安装python

    python官方下载地址:https://www.python.org/downloads/

    3c07850fee92f053257238f23443a42d.png

    进入页面就有两个版本的下载选择,2.x版本和3.x版本,或者根据系统选择对应版本。

    点击Windows,跳转到Windows版本页面:

    943a6b36555a6b0f5fb470cf0d32ae4b.png

    点选Python3.6.0版本,进入3.6版本页面,拉到页面下方,找到files

    af6c5293923a0b5c1dd3818d7e73f638.png

    选择64位or32位(x86-64即64,x86即32位),每种都有3个版本

    embeddable zip file是嵌入式的,可以集成到其它应用中;

    executable installer是exe可执行文件方式安装;

    web-based installer是联网安装包,需要有网络环境;

    如果不是嵌入式的,后两种方式都是可以的。这里我下的是web-based版本,下载后双击运行,进入安装程序:

    6a85a3dc81115ada87376defb2990463.png

    可选默认安装方式,也可自定义安装,两种方式都需勾上下方的Add Python 3.6 to PATH,这里我们选自定义安装Customize installation

    1cca2ded05cde4bf5c98f85125a37012.png

    这里我们按默认全选即可,Next

    531e834d3d6b34b4dcf9b47f98e0d1c9.png

    勾上第一个选项,选择安装路径后(注意安装路径不要包含中文,否则后面安装工具可能会报错),点击install就开始安装了

    ad998af30b51edeabbc8fe30d25ecec3.png

    等待安装...

    ce8b71d0a3a58a7ff38e876a8f7d252e.png

    安装完成,点击close,python安装完毕~ 前面已勾选了add path,所以无需设置任何系统变量,即可使用。

    安装后点击开始菜单,在菜单最上面能找到IDLE

    4715f2a1644e3aa4519c3796fa5f9c33.png

    IDLE是python自带的shell,点击打开,即可开始编写python脚本了~~

    bc39ae2d59b3ed2503ac04fefa30b70c.png

    二、安装selenium

    上面python已安装完毕,接下来安装selenium。

    安装selenium之前需安装些必要工具

    1. 安装setuptools

    下载地址:https://pypi.python.org/pypi/setuptools

    d027af7263c9b8a4ffdb5dd15848f523.png

    在页面找到zip安装包,下载后解压。在命令行(运行->cmd)进入解压目录

    执行 python setup.py install 即可安装,注意解压路径不要包含中文,否则安装会报错。

    2.安装pip

    下载地址:https://pypi.python.org/pypi/pip

    bae80bd9883f41bddb64f44605d41aa7.png

    在页面找到pip-9.x.tar.gz,下载后解压。同样在命令行进入解压目录,执行 python setup.py install 即可自动安装。

    3.安装selenium

    上面2个工具安装好后,安装selenium只需在命令行进入python安装路径Script目录下,执行 pip install -U selenium 即可自动安装。

    完成安装后在IDLE输入 from selenium import webdriver ,如果没报错即代表安装成功。

    三 注意事项

    1. selenium3.0需要独立安装Firefox驱动,不再自带驱动,下载地址: https://github.com/mozilla/geckodriver/releases 下载对应版本,解压放在python安装路径下即可;

    2. geckodriver驱动要求Friefox浏览器必须48版本以上,如果不是,更新Firefox;

    3. 如果用Java开发,需注意3.0必须用JDK1.8版本才行;

    4. Chromedriver下载:https://sites.google.com/a/chromium.org/chromedriver/downloads 同样也是下载后放在python安装路径下即可。

    四 第一个自动化脚本

    完成上面所有准备工作,就可以开始第一个自动化脚本的编写啦~

    打开IDLE,通过快捷键ctrl+n打开一个新窗口,在新窗口输入以下代码:

    # coding = utf-8

    from selenium import webdriver

    browser = webdriver.Firefox()

    browser.get("http://www.baidu.com")

    browser.find_element_by_id("kw").send_keys("selenium")

    browser.find_element_by_id("su").click()

    browser.quit()

    保存为test1.py,通过快捷键F5运行脚本,可看到脚本启动Firefox浏览器进入百度页,输入“selenium” 点击搜索按钮,最后关闭浏览器的过程。第一个脚本即完成了~

    代码解析:

    # coding = utf-8

    为了防止乱码问题,以及在程序中添加中文注释,把编码统一成 UTF-8;

    from selenium import webdriver

    导入selenium的webdriver包,导入webdriver包后才能使用 webdriver API 进行自动化脚本开发;

    browser = webdriver.Firefox()

    将控制的 webdriver 的 Firefox 赋值给 browser;获得了浏览器对象才可以启动浏览器;

    browser.get("http://www.baidu.com")

    获得浏览器对象后,通过 get()方法,向浏览器发送网址;

    browser.find_element_by_id("kw").send_keys("selenium")

    通过 id=kw 定位到百度的输入框,并通过键盘方法send_keys()向输入框里输入selenium ;

    browser.find_element_by_id("su").click()

    通过 id=su 定位到搜索按钮,并向按钮发送单击事件(click()) ;

    browser.quit()

    退出并关闭窗口的每一个相关的驱动程序。

    到此这篇关于使用Python+selenium实现第一个自动化测试脚本的文章就介绍到这了,更多相关Python selenium 自动化测试内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

    展开全文
  • appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。“移动web应用”是指使用移动...

    format,png

    appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。

    “移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。

    “移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。

    “混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。

    重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。python脚本语言?

    appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。

    appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。

    appium服务端定义了官方协议的扩展,为appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。这就是为什么我们需要appium特定的客户端,而不是通用的Selenium 客户端。当然,appium 客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,所以他们仍然可以用来运行通用的Selenium会话。

    appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

    appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及Selenium(WebDriver)如何做到支持多语言的原因;

    ea50f5b7d7942433cb210156eb1a68.png

    appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量;

    语言/框架Github地址

    在安装和介绍appium之前,非常有必要介绍一下appium是如何工作的。

    appium_principle.png

    通过上面一张图简单展示了appium的工具原理。

    首先,appium支持多语言,因为它针对流的几种语言分别开发的相应的appium库。好处就是我们可以选择自己熟悉的语言编写appium脚本。

    其次,appium支持多平台,包括MAC和Windows。它针对这两大平台开发了appium-Server。

    最后,appium又同时支持Android 和 iOS两个操作系统。

    这就使得appium变得非常灵活。

    当我在MAC平台上,通过Python(python-client)编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (MAC下的appium-Server),appium-Server通过解析,驱动iOS设备来执行appium自动化脚本。

    20135291742369717.jpg

    或者,我在Windows平台上,通过Java(java-client)编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server通过解析,驱动Android虚拟机或真机来执行appium脚本。

    所以,你会看到appium的强大之处就在于此。

    这才是你最关心的问题,使用appium都需要安装些什么?其实,从appium工作原理你就应该知道需要装什么了。

    编程语言

    想用 Python 的同学,点这里

    想用 Java 的同学,点这里

    appium client

    参考3、支持多平台、多语言的列表,根据你选择的语言来选择对应的 appium-client。

    appium Server

    参考4、appium工作原理的介绍,根据你的系统平台选择 对应的 appium-server。

    测试运行环境

    你需要一个Android模拟器,或 一个 Android 手机,或 一台 iPhone 手机。

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-72685-1.html

    展开全文
  • 而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问点击行为)。...
  • 自动化测试概述—自动化测试脚本编写方法二课程介绍第一章-自动化测试概述:从本章开始,我们开始学习几个主流高级测试工具。我们会将课程分为自动化测试工具、性能测试工具、测试管理工具、接口测试工具等。这些...
  • Python自动化报告美化pytest+Allure初体验胖友圈经常有各种小姐姐发励志减肥的状态,印象很深的一句话是,没有人愿意透过你粗糙的外表,没有人愿意透过你邋遢的外表去触及你美好的心灵,在自动化测试中也是一样,...
  • 自动化测试-python脚本语言

    千次阅读 2015-09-07 23:52:19
     而我们所希望的,是一种自动化回归脚本的方式,可以重复性的回归现有功能,并给出回归测试报告。  Python的世界有一个开源框架Splinter,可以非常棒的模拟浏览器的行为(从某种意义上也可以说是人的访问
  • 安装 Python自动化测试脚本是用Python 3写的,要运行脚本需要先安装 Python 3 环境下载地址:Python 3.6.5安装 android-catcher 依赖打开脚本目录执行以下命令,安装依赖pip install -r requirements.txt复制代码...
  • [摘 要]自动化测试近年来的技术已经越来越成熟,在某些方面有着不可替代的作用,例如在性能测试,压力测试中,...[关键词]测试技术手工测试自动化测试python脚本[中图分类号]TP3[文献标识码]A[文章编号]1007-9416(2010)0...
  • 写在前面本文主要介绍一个基于 uiautomator2 封装的一个 Python 库 android-catcher,该库的功能主要有对 Android 设备...安装安装 Python自动化测试脚本是用 Python 3 写的,要运行脚本需要先安装 Python 3 环...
  • 先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码对一个测试脚本必须存在哪些...
  • 如下图1所示:▲图1二、 自动生成Jmeter文件点击“生成jmeter文件”按钮,如下图2:后台会自动根据选择关联的接口,并自动生成Jmeter文件▲图2部分后台函数内容,如下图3:▲图3三、 设置脚本参数在界面设置并发数、 ...
  • 插件使用库 request库:requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际的 URL 和 POST 数据自动编码。POC代码框架 1、首先导入requests标准库...
  • 精通Python自动化脚本-运维人员宝典完整目录:什么是调试?调试(debugging)是一个解决代码中错误或导致软件不能正常运行的问题的过程。Python中的调试非常容易。Python调试器设置条件断点并对源码逐行调试。我们将...
  • 文章来源-测试干货(dahong_test)接口自动化目前是测试圈主流的一个话题,我也在网上搜索了很多关于自动化的关键词,大多数博主分享的python做接口自动化都是以开源的框架,比如:pytest、unittest+ddt(数据驱动) ...
  • 【python3-4】Jenkins pipline集成参数自动化执行python脚本 https://www.jianshu.com/p/af1eb503eb4a https://www.jianshu.com/p/af1eb503eb4a 结合前面三篇文章【python3-1】读取jmeter报告内容【python3-2】...
  • 本周进行了网络性能测试综合实践,有一个任务就是使用Python脚本来实现Spirent自动化测试。 这里一自动化测试吞吐量为例, 首先是需要配置环境,需要的Python版本为3.4.4 左右不能太高,然后需要StcPython这个文件,...
  • 先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架。我发现他们出的脚本都是挨个手写的,格式上也是参差不齐。所以有了根据用例表批量生成脚本的一段小代码对一个测试脚本必须存在哪些...
  • jenkins自动执行selenium+python脚本进行自动化测试 (1)新建一个job名称为selenium,配置如下图: 在界面中点击HTML Report进行查看,会看到以下界面 如果这个界面中没有出现css样式,那么就需要...
  • 本文实例讲述了python自动化测试的过程,分享给大家供大家参考。具体代码如下:import unittest########################################################################class RomanNumeralConverter(object):""...
  • 自动化测试运行脚本python

    千次阅读 2019-01-10 12:25:04
    自动化测试脚本,以QQ空间为例 账号、密码、用户名根据实际情况填写 1、写测试用例代码 import unittest from selenium import webdriver import time # 创建测试类——继承unittest.TestCase class TestSpace...
  • Python测试开发-浅谈如何自动化生成测试脚本原创:fin 测试开发社区前天阅读文本大概需要 6.66 分钟。一 、接口列表展示,并选择在右边,点击选择要关联的接口,区分是否要登录,如需登录,在选择接口栏下,点击登录...
  • 原作者:未知的向往原出处:CSDN原文链接:https://blog.csdn.net/nanalinlinlin/article/details/54692114版权声明:本文为博主原创文章,转载请附上博文链接python3.6+selenium3.0环境:windows10,64位一、安装...
  • 文章来源-测试干货(dahong_test)原文链接:https://mp.weixin.qq.com/s/kNY8kkPmDqPxcEEPEthKYAhttp://weixin.qq.com/r/Mjru9gzEsVHOrUiV928g ...大多数博主分享的python做接口自动化都是以开源的框架,比如:...
  • 1 前言 在编写自动化测试前,我们一般会先熟悉功能模块,针对某一模块编写测试用例,编写完成后根据测试用例的步骤进行脚本编写或者录制脚本,录制脚本的好处在于,可以比较快捷的实现一段简单代码的编写。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,057
精华内容 1,622
关键字:

自动化测试python脚本

python 订阅