三个参数放在一行一起定义的话,填写任意一个参数,其他两个都会随之变化的,所以分开写就好了。
systemPort 端口不能重复。还有确实有 (锤子,魅族) 等部分版本手机用 uiautomator2 服务,运行一会手机里 uiautomator2 进程就会 crash。具体也可以看下手机 logcat 日志
什么意思,用这种装饰器这个装饰 class 类么?
这扩展没有安装, 进入到目录下面 ,运行 Script/bootstrap.sh 如果这个编译出错,貌似要修改 /Inspector/webpack.config.js 里面文件,具体你百度下。 Q 549042238
对,用 appium 自带的 wda ,去 appium 目录里面找
用 Appium 自带的 wda 进行编译,Appium 对 wda 进行了二次开发,如果从 Facebook 下载的话可能版本不匹配。
pytest.ini markers 应该是你想自定义一个 mark 插件,然后给你注册的插件一个文档说明的作用。
如果你想批量标记,又不想代码里面加装饰器,就用用例名称区分,然后用 pytest_collection_modifyitems 批量标记
https://testerhome.com/topics/19327
用例之间 一个 driver 的 session 冲突或者给覆盖了? driver 要么所有用例继承,要么每个重新初始化一次
开源的
http://docs.quamotion.mobi/imobiledevice/download/ 打包好的 exe 文件,加到环境变量里直接执行相关命令就好了
https://github.com/libimobiledevice-win32/libimobiledevice 源码
appium-uiautomator2 多点触控
http://appium.io/docs/en/commands/interactions/touch/multi-touch-perform/
这种问题最好有日志
这里的 parent 的作用感觉就像是一个全局的 session ,传递的时候,为了使下面的所有用例都继承这个 session,测试结果也保存在一个 session 里。
Pytest 有几种作用域 Session ,Module,Package 等等什么的
这个运行关系应该只能是由前往后,并不能由后去调用前面的,那样容易出现死循环了吧?
只能是后面的用例,判断前面是否执行通过过某条用例。可能我没理解你的跨文件是什么意思,测试的话直接运行最上层文件夹吧。两个文件都能运行了
@pytest.mark.dependency(depends=['test_a.py::test_a']) 这种方法不用 ,改成 session 之后跨文件直接 test_a 就行
哈哈,刚想起来这里忘记说了
要将 site-packages/pytest_dependency.py 库的 module 更换成 session,就能跨 py 文件了
可以的呀,筛选的时候需要加上 Class 类名加函名称就行,例如
@user1cy(depends=["TestExample::test_a","TestExample::test_b"])
可能是启动 appActivity 错的,
最简单的方式查看下启动 Activity 是什么就行了
adb shell monkey -p com.alibaba.android.rimet -v 1 打印内容
cmp=com.alibaba.android.rimet/.biz.SplashActivity
appium:
appActivity=.biz.SplashActivity
应该就行了
加上你的 token 和参数?
这是考 shell?
find ./A/ -maxdepth 2 -name '*.jpg' -exec cp {} ./B \;
使用参数化咯~
Python3 ,系统方法 itertools.product
def product(*args, repeat=1):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
print(list(product('123456', repeat =6)))
长知识了。。。
UIAutomator 模式能行的话 UIAutomator2 试试 set_value(element, value) ?
写一个简单的装饰呗
import unittest
def skipTest(value):
def deco(function):
def wrapper(self, *args, **kwargs):
if not getattr(self, value):
self.skipTest('未登录跳过用例')
else:
function(self, *args, **kwargs)
return wrapper
return deco
class DemoTest(unittest.TestCase):
isOnline = False # 未登录
def test_1(self):
self.assertTrue(1 == 1)
DemoTest.isOnline = True # 成功登陆
@skipTest('isOnline')
def test_2(self):
print("A test")
if __name__ == '__main__':
unittest.main()
用 pytest 吧
@user1cy(depends=["test_a"])
def test_c():