airtest运行脚本_airtest之脚本批量运行

项目目录

20190214174900024126.png

根目录:D:\workspace\airtest\suite

脚本:douyin.air,dy.air

日志目录:log

日志目录由custom_launcher.py自动生成,custom_launcher.py目录:D:\workspace\airtest\suite\custom_launcher.py,即在根目录下

summary.html:自动生成的

summary_template.html:复制进去即可

summary_template.html内容如下:

测试结果汇总

color: red;

width: 7emem;

text-align: center;

}

.success {

color: green;

width: 7emem;

text-align: center;

}

.details-col-elapsed {

width: 7em;

text-align: center;

}

.details-col-msg {

width: 7em;

text-align: center;

background-color:#ccc;

}

Test Statistics

案例名称执行结果
{{r.name}}{{"成功" if r.result else "失败"}}

custom_launcher.py目录:D:\workspace\airtest\suite\custom_launcher.py,即在根目录下

custom_launcher.py直接执行即可,如下

20190214174900289734.png

custom_launcher.py内容:

from airtest.cli.runner import AirtestCase, run_script

from argparse import *

import airtest.report.report as report

import jinja2

import shutil

import os

import io

class CustomAirtestCase(AirtestCase):

def setUp(self):

print("custom setup")

# add var/function/class/.. to globals

# self.scope["hunter"] = "i am hunter"

# self.scope["add"] = lambda x: x+1

# exec setup script

# self.exec_other_script("setup.owl")

super(CustomAirtestCase, self).setUp()

def tearDown(self):

print("custom tearDown")

# exec teardown script

# self.exec_other_script("teardown.owl")

super(CustomAirtestCase, self).setUp()

#roor_dir是脚本根目录

def run_air(self, root_dir=‘D:\\workspace\\airtest\\suite‘, device=[‘android://127.0.0.1:5037/2476a88e‘]):

# 聚合结果

results = []

#生成日志路径

root_log = root_dir + ‘\\‘ + ‘log‘

if os.path.isdir(root_log):

shutil.rmtree(root_log)

else:

os.makedirs(root_log)

print(str(root_log) + ‘is created‘)

#获取所有用例

for f in os.listdir(root_dir):

if f.endswith(".air"):

# f为.air案例名称:douyin.air

airName = f

script = os.path.join(root_dir, f)

# script路径(它是脚本路径):D:\workspace\airtest\suite\douyin.air

print(script)

# 日志存放路径和名称:D:\workspace\airtest\suite\log\douyin

log = os.path.join(root_dir, ‘log‘ + ‘\\‘ + airName.replace(‘.air‘, ‘‘))

print(log)

#判断目录在不在,在,则删除目录中的内容,否则,新建每个脚本log目录

if os.path.isdir(log):

shutil.rmtree(log)

else:

os.makedirs(log)

print(str(log) + ‘is created‘)

#日志的输出文件log:D:\workspace\airtest\suite\log\douyin\log.html

output_file = log + ‘\\‘ + ‘log.html‘

#命令行参数解析后,参数的数据格式Namespace(device=device, log=log, recording=None, script=script)

#python -m airtest run D:\workspace\airtest\dy.air --device Android://127.0.0.1:5037/B2T5T16C06000021 --log "D:\workspace\airtest\douyin.air\2"

args = Namespace(device=device, log=log, recording=None, script=script)

#自定义启动的核心代码

try:

run_script(args, AirtestCase)

except:

pass

finally:

rpt = report.LogToHtml(script, log)

#测试结果模板渲染,"log_template.html"时airtest自带的模板,output_file日志存放路径

rpt.report("log_template.html", output_file=output_file)

#结果保存在result对象中

result = {}

result["name"] = airName.replace(‘.air‘, ‘‘)

result["result"] = rpt.test_result

results.append(result)

# 生成聚合报告

env = jinja2.Environment(

loader=jinja2.FileSystemLoader(root_dir),

extensions=(),

autoescape=True

)

#summary_template.html相对路径,跟我配置一样即可

template = env.get_template("summary_template.html", root_dir)

html = template.render({"results": results})

output_file = os.path.join(root_dir, "summary.html")

with io.open(output_file, ‘w‘, encoding="utf-8") as f:

f.write(html)

print(output_file)

if __name__ == ‘__main__‘:

test = CustomAirtestCase()

device =[‘android://127.0.0.1:5037/2476a88e‘]#自定义

test.run_air(‘D:\\workspace\\airtest\\suite‘, device)#自定义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值