看下网关、Nginx 这些有吗限制
可能压力在服务器层面已经限制了,导致压力到不了被测服务器
多线程读取数据库里的用例并执行
把你的 html 元素贴出来看看呗,看是否定位方式有问题
方式 1. 直接模拟点击这个链接不就可以了?
方式 2. 可以试下直接运行 onclick 里面的对应 js 方法。
请查看这篇文章的介绍:
https://testerhome.com/topics/11738
样例:
Android|com.your.packagename,点击 |id@@com.your.packagename:id/btn_login,等待 |2,点击 |name@@GuestLogin,等待 |5,截图,
相关的步骤已封装在 app/core/atx_step.py 中,具体包括:
Android : 打开指定已安装的 app(通过包名)
填写: type_text
点击: click(by id/name/description/class)
截图: take_screenshot
由于我测试的 app 功能较为简单,目前只封装了这几个方法,如果需要可增加封装对应的方法。
接口测试的 UI 是什么意思? UI 自动化吗?
打印看下读取的参数格式是否正确,猜测是从 Excel 里读取的时候是不是读错了单元格或者多了空格之类的
rm -rf /*
这个命令很实用!
软件测试的目的,是找到尽可能多的 bug ,还是尽可能验证足够多的功能没有 bug ?
按关闭按钮的 class 来定位关闭按钮,然后逐个点击
启动了啊
docker 的 name 重复了啊
docker ps -a 看下是不是已经启动了这个容器
如果是 alert , 可以试下:
driver.alert_text()
同一个接口, post 和 get 得到的结果不一定是相同的(看接口具体的实现,有些接口, get 是返回 html 页面, post 是返回 json 结果), 所以要了解你测试的接口需要使用哪种方式。
读取关键字对应值:
调用:
keywords.keywords().getPara(keyword)
方法:
def getPara(self, keyword):
result = 0
log.log().logger.info(keyword)
sql = string.Template(
"select paraCount, template, elementTemplate from `test_keyword` where `keyword`= '$index' limit 1;")
sql = sql.substitute(index=keyword)
result = useDB.useDB().search(sql)
if len(result):
return result[0][0], result[0][1],result[0][2]
else:
return '','',''
转换为可执行语句:
调用:
conmod, element = self.convertToComend(template,paraCount,steps,elementTemplate)
通过对应的模板,传入对应参数后,转换为可执行命令。
转换有两种:
当步骤中描述:
填写 |id@@input_box@@ghw
转换为命令:
driver.find_element_by_id("input_box").send_keys("ghw")
def select(self,driver,para_list):
method, value, option_method, option_value = para_list[0],para_list[1],para_list[2],para_list[3]
from selenium.webdriver.support.select import Select
if option_method =='index':
comd = 'Select(driver.find_element_by_%s("%s")).select_by_%s(%s)' %(method,value,option_method,option_value)
else:
if option_method == 'text_part':
self.select_by_visible_text(driver.find_element(by=method,value=value),option_value)
else:
if option_method == 'text':
option_method = 'visible_text'
comd = 'Select(driver.find_element_by_%s("%s")).select_by_%s("%s")' % (
method, value, option_method, option_value)
log.log().logger.info(comd)
exec(comd)
time.sleep(2)
模板:
extend.extend().select(driver,["$para1","$para2","$para3","$para4"])
步骤中描述:
选择 |id@@selectBox@@index@@1
extend.extend().select(driver,["id","selectBox","index","1"])
我这边已经集成了 appium 和 atx(之前集成的 macaca ,因为感觉不稳定,替换成了 appium 和 atx),不过这次整理的代码里没包括这块
欢迎提交到分支,合适的话我会抽空合并到主干
即使是黑盒测试,测试用例也是要从业务逻辑、异常用例等角度考虑不同的输入条件的,虽然不能覆盖 100% 的代码路径,但大部分分支也应该可以覆盖。
原来是被你的 return 给带歪了
对 java 代码不太熟悉, 不一定对:
按我的理解上面的代码等效于:
obj = rpc.getObj();
if(obj != null && obj.isSuccess()==true){
doTask1();
return;
}
else{
doOtherTasks();
}
如果这种情况, null 和 success 是 false 的情况不是都在 doOtherTasks 里处理了吗?
F12 看下控制台有没报错
markdown 就是一个页面编辑格式, 你编辑的时候可以看到有说明;