提交 bcaca0dc 编写于 作者: yuan.luo's avatar yuan.luo

bug fixed

上级 515b0551
import time import time
import os from unittest import TestCase
from appium import webdriver
from util import config
from util.tools import set_file_path
from util.config import BasicCase
class Login(TestCase):
def setUp(self):
self.driver = webdriver.Remote(config.host, config.get_caps())
class Login(BasicCase):
def tearDown(self): def tearDown(self):
pass pass
...@@ -21,7 +26,7 @@ class Login(BasicCase): ...@@ -21,7 +26,7 @@ class Login(BasicCase):
time.sleep(1) time.sleep(1)
self.driver.find_element_by_id("btn_user_login").click() self.driver.find_element_by_id("btn_user_login").click()
filename = os.getcwd() + 'Login.png' filename = set_file_path('images/') + 'Login.png'
self.driver.save_screenshot(filename) self.driver.save_screenshot(filename)
except Exception as e: except Exception as e:
print(e) print(e)
...@@ -2,12 +2,12 @@ import unittest ...@@ -2,12 +2,12 @@ import unittest
import time import time
import HTMLTestRunner import HTMLTestRunner
from functions.login import Login from functions.login import Login
from util.Tools import set_file_path from util.tools import set_file_path
if __name__ == '__main__': if __name__ == '__main__':
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(Login("test_login")) suite.addTest(Login("test_login"))
filename = set_file_path('reports/') + time.strftime("%Y-%m-%d-%H-%M-%S", time.gmtime()) + '-result.html' filename = set_file_path('reports/') + time.strftime("%Y_%m_%d_%H_%M_%S", time.gmtime()) + '_result.html'
fp = open(filename, 'wb') fp = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='测试报告', description='用例执行情况:') runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='测试报告', description='用例执行情况:')
runner.run(suite) runner.run(suite)
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>测试报告</title>
<meta name="generator" content="HTMLTestRunner 0.8.2.2"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<style type="text/css" media="screen">
body { font-family: Microsoft YaHei,Tahoma,arial,helvetica,sans-serif;padding: 20px; font-size: 80%; }
table { font-size: 100%; }
/* -- heading ---------------------------------------------------------------------- */
.heading {
margin-top: 0ex;
margin-bottom: 1ex;
}
.heading .description {
margin-top: 4ex;
margin-bottom: 6ex;
}
/* -- report ------------------------------------------------------------------------ */
#total_row { font-weight: bold; }
.passCase { color: #5cb85c; }
.failCase { color: #d9534f; font-weight: bold; }
.errorCase { color: #f0ad4e; font-weight: bold; }
.hiddenRow { display: none; }
.testcase { margin-left: 2em; }
</style>
</head>
<body >
<script language="javascript" type="text/javascript">
output_list = Array();
/*level 调整增加只显示通过用例的分类 --Findyou
0:Summary //all hiddenRow
1:Failed //pt hiddenRow, ft none
2:Pass //pt none, ft hiddenRow
3:All //pt none, ft none
*/
function showCase(level) {
trs = document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
tr = trs[i];
id = tr.id;
if (id.substr(0,2) == 'ft') {
if (level == 2 || level == 0 ) {
tr.className = 'hiddenRow';
}
else {
tr.className = '';
}
}
if (id.substr(0,2) == 'pt') {
if (level < 2) {
tr.className = 'hiddenRow';
}
else {
tr.className = '';
}
}
}
//加入【详细】切换文字变化 --Findyou
detail_class=document.getElementsByClassName('detail');
//console.log(detail_class.length)
if (level == 3) {
for (var i = 0; i < detail_class.length; i++){
detail_class[i].innerHTML="收起"
}
}
else{
for (var i = 0; i < detail_class.length; i++){
detail_class[i].innerHTML="详细"
}
}
}
function showClassDetail(cid, count) {
var id_list = Array(count);
var toHide = 1;
for (var i = 0; i < count; i++) {
//ID修改 点 为 下划线 -Findyou
tid0 = 't' + cid.substr(1) + '_' + (i+1);
tid = 'f' + tid0;
tr = document.getElementById(tid);
if (!tr) {
tid = 'p' + tid0;
tr = document.getElementById(tid);
}
id_list[i] = tid;
if (tr.className) {
toHide = 0;
}
}
for (var i = 0; i < count; i++) {
tid = id_list[i];
//修改点击无法收起的BUG,加入【详细】切换文字变化 --Findyou
if (toHide) {
document.getElementById(tid).className = 'hiddenRow';
document.getElementById(cid).innerText = "详细"
}
else {
document.getElementById(tid).className = '';
document.getElementById(cid).innerText = "收起"
}
}
}
function html_escape(s) {
s = s.replace(/&/g,'&amp;');
s = s.replace(/</g,'&lt;');
s = s.replace(/>/g,'&gt;');
return s;
}
</script>
<div class='heading'>
<h1 style="font-family: Microsoft YaHei">测试报告</h1>
<p class='attribute'><strong>测试人员 : </strong> 最棒QA</p>
<p class='attribute'><strong>开始时间 : </strong> 2019-06-20 18:30:35</p>
<p class='attribute'><strong>合计耗时 : </strong> 0:00:00.002306</p>
<p class='attribute'><strong>测试结果 : </strong> 共 1,错误 1,通过率= 0.00%</p>
<p class='description'>用例执行情况:</p>
</div>
<p id='show_detail_line'>
<a class="btn btn-primary" href='javascript:showCase(0)'>概要{ 0.00% }</a>
<a class="btn btn-danger" href='javascript:showCase(1)'>失败{ 0 }</a>
<a class="btn btn-success" href='javascript:showCase(2)'>通过{ 0 }</a>
<a class="btn btn-info" href='javascript:showCase(3)'>所有{ 1 }</a>
</p>
<table id='result_table' class="table table-condensed table-bordered table-hover">
<colgroup>
<col align='left' />
<col align='right' />
<col align='right' />
<col align='right' />
<col align='right' />
<col align='right' />
</colgroup>
<tr id='header_row' class="text-center success" style="font-weight: bold;font-size: 14px;">
<td>用例集/测试用例</td>
<td>总计</td>
<td>通过</td>
<td>失败</td>
<td>错误</td>
<td>详细</td>
</tr>
<tr class='errorClass warning'>
<td>functions.login.Login</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center"><a href="javascript:showClassDetail('c1',1)" class="detail" id='c1'>详细</a></td>
</tr>
<tr id='ft1_1' class='none'>
<td class='errorCase'><div class='testcase'>test_login</div></td>
<td colspan='5' align='center'>
<!--默认收起错误信息 -Findyou
<button id='btn_ft1_1' type="button" class="btn btn-danger btn-xs collapsed" data-toggle="collapse" data-target='#div_ft1_1'>错误</button>
<div id='div_ft1_1' class="collapse"> -->
<!-- 默认展开错误信息 -Findyou -->
<button id='btn_ft1_1' type="button" class="btn btn-danger btn-xs" data-toggle="collapse" data-target='#div_ft1_1'>错误</button>
<div id='div_ft1_1' class="collapse in">
<pre>
ft1_1: Traceback (most recent call last):
File "/Users/pingzhang/Downloads/study/auto-test/util/config.py", line 24, in setUp
self.driver = webdriver.Remote(get_caps('6.0.1'), host)
File "/usr/local/lib/python3.7/site-packages/appium/webdriver/webdriver.py", line 139, in __init__
AppiumConnection(command_executor, keep_alive=keep_alive),
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 109, in __init__
parsed_url = parse.urlparse(remote_server_addr)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py", line 367, in urlparse
url, scheme, _coerce_result = _coerce_args(url, scheme)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py", line 123, in _coerce_args
return _decode_args(args) + (_encode_result,)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py", line 107, in _decode_args
return tuple(x.decode(encoding, errors) if x else '' for x in args)
File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/parse.py", line 107, in &lt;genexpr&gt;
return tuple(x.decode(encoding, errors) if x else '' for x in args)
AttributeError: 'dict' object has no attribute 'decode'
</pre>
</div>
</td>
</tr>
<tr id='total_row' class="text-center active">
<td>总计</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>通过率:0.00%</td>
</tr>
</table>
<div id='ending'>&nbsp;</div>
<div style=" position:fixed;right:50px; bottom:30px; width:20px; height:20px;cursor:pointer">
<a href="#"><span class="glyphicon glyphicon-eject" style = "font-size:30px;" aria-hidden="true">
</span></a></div>
</body>
</html>
from unittest import TestCase
from appium import webdriver
host = "http://localhost:4723/wd/hub" host = "http://localhost:4723/wd/hub"
def get_caps(version='8.0.0'):
def get_caps(version="8.0.0"):
caps = {} caps = {}
caps["platformName"] = "Android" caps["platformName"] = "Android"
caps["platformVersion"] = version caps["platformVersion"] = version
caps["deviceName"] = "PACM00" caps["deviceName"] = "SM-G9550"
caps["appPackage"] = "com.picahealth.yunque" caps["appPackage"] = "com.picahealth.yunque"
caps["appActivity"] = ".activitys.mainpage.InitWelcomeActivityVideo" caps["appActivity"] = ".activitys.mainpage.InitWelcomeActivityVideo"
return caps return caps
class BasicCase(TestCase):
"""
def __init__(self):
super().__init__(BasicCase)
self.driver = webdriver.Remote(get_caps(), host)
"""
def setUp(self):
self.driver = webdriver.Remote(get_caps('6.0.1'), host)
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册