# python3.6以上版本
def get_bcc(inputStr: str) -> str:
bcc = 0
for i in inputStr.split(' '):
bcc = bcc ^ int(i, 16)
return f'{bcc:x}'
def test():
inputStr = "23 23 02 35 35 36 36 37 37 35 35 36 36 37 37 35 35 36 36 37 02 01 00 a1 13 0b 04 0b 1d 20 03 C8 01 00 00 00 00 00 00 35 35 36 36 37 37 35 35 36 36 37 37 35 35 36 36 37 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 00 02 32 00 64 af af 01 90 03 e8 13 88 13 88 7d 03 e8 28 60 28 60 01 f4 5a 7d 01 07 3b 5e 64 01 d4 a9 da 00 00 03 e8 80 01 7d 00 00 00 64 5a 00 00 13 88 00 00 00 32 28 60"
assert get_bcc(inputStr) == "43"
实在是百度不出来
你都百度了啥。。。。百度下 “python 循环导入” 吧
一般很少这样用吧,pytest 就是单元测试,注意控制变量啊,我用 pytest-lazy-fixture 插件试了下好像可以,如果有更好的方式请告诉我
import pytest
class Test_case123:
@pytest.fixture(params=[pytest.lazy_fixture('get_x'),
pytest.lazy_fixture('get_y')])
def param_info(self, request):
return request.param
@pytest.fixture
def get_x(self):
return self.__class__.x
@pytest.fixture
def get_y(self):
return self.__class__.y
def test_1(self):
self.__class__.x = "希望小学"
def test_2(self):
self.__class__.y = "希望小学生"
@pytest.mark.parametrize('z', [pytest.lazy_fixture('param_info')])
def test_3(self, z):
assert "希望" in z
看见=号结尾一般就是 base64 编码
我确实有每天定时跑线上冒烟的自动化脚本需求,但是目前云真机都太贵了,用不起用不起
sudo python3 setup.py install 试试
有线耳机也有风险,看这个http://tieba.baidu.com/p/6133768735#
首先就应该把外放的音量调到最低。。。
int 和 integer 的数据结构是不一样的,需要先进行转化
select = jpype.java.lang.Integer(1)
这是 base64 编码的图片数据,用 base64 去解码后就可以了
import base64
img_base64 = 'iVBORw0KGgoAAAANSUhEUgAAAKAAAABGCAMAAAB8DG+AAAAAP1BMVEUAAAA9fEB6uX1SkVVvrnIPThJPjlJ5uHwubTEcWx9TklZioWU1dDh3tno9fEA0czd3tnowbzMUUxcKSQ0xcDSd5F48AAAAAXRSTlMAQObYZgAAA0xJREFUeJzsmduO4yAMhm2qNu1Fm4u+/7uu0nDwESZAtb2IpdWMMsR8/NjGZOG000477bTTTjuty3D7h58f8x3PcIMbHe4/hNPX69XnNGx4OIUQpXG+HkKEEIJw1Y0HWbo5gNFRwDkKRjjqegSQLBemCChSQwEei0GxFzNyRABpwGPOmIIzTPHYhI/H44C7mdXKBjT4KGHwvU0upQaNuTk7YHocQnAGz6p7VY+uguV5yHB8SyfVvQaMt8dCWLOyf0FBvcUmNCCu9DmagHYFWOYDWqPWdUW+Cl7xXMJlGSGUHp0yyBVEIJVOBGH8lWbPOJ+c1xgEZUJxXCOoGDQOzG5Aq1NQe76h0X3ktYXy5a4NeKPwHGFMpzraC0dTQTABkycSo/f7HeD53AjD5XLpI0zrtgDTrpe/1PiYgpvd7zth5OsizAraSZge5fCPD1Jyoqo+NHsi4Md6AYEUWP9gyeyF70PI+ViSbc5mAXIY9iRBC9AIiCVGUa0ux2AhHOcTrQ1XDksO74D5DXqooFjfLEO79QJS44CQLsuSiRD52Sw8TOJDa5OA1TikA0kxAcDK4bz/vqfUbYSw0XlFBQWHzGFxjBS+T0rdbr2EWE0QUAqqvcx++H2pbMpxBVl0mROiraB5fZbvQVnOASY1OwILbz1Ej0+vNW7l+WzqbmFZXZDlwQDkParsaar+RwERXTWMVjGv5a+I/RKSS48zExdWaILYvJ7jKGMJJMcBkvJIoo/9saWhWSGOQVYnUPcjeTNp8Dlt5iRDYCkhZzJTP7+pSuc3EX0JxXC0P259jRCNdAcfkI9Dq9nm/td1FRMeXAWNIS2hUTw9CWlOMz5B2BT6/X5bfEBzsuoO/QIUAa/Xax2wVrve70JYtos0gqJftF25/iPf9Rr9OIAVFTNgbuL9OO+qvwgRcF+bisFWPiVAzE2p+2ZvWibAyuts4zQh/VKv38udzAihl9R5JqfIZhBHZ78iHjYrzS0GI6Brs3MFx25sfo8iQfRNzpenUz+VCdRdHVF8XWtO3yWfkavEYcVIpROxNfnY9Pn+YFnHZuD+L1MNwW8attPqtN+y8h9qv2khTCYc/PaorBvQSZLhr6PSegHdNJ6toB2D/wIAAP//DV8OoEXRcU8AAAAASUVORK5CYII='
img_bin = base64.decodestring(img_base64)
with open('base64.png', 'wb') as f:
f.write(img_bin)
我查了下 groupby 的思想,先排序后去重,是要快很多,但是分组有点浪费时间了,优化了下
def test(l):
n = []
l.sort()
repeat = None
for e in l:
if e != repeat:
repeat = e
n.append(e)
return n
然而速度还是比不上 set
举个例子,比方说登录 testerhome 后,会在 cookie 中找到一个字段叫 remember_user_token 的,一看就是你的用户信息,然后找一个未登录的浏览器打开 testerhome 网站,F12 打开控制台输入 document.cookie="remember_user_token=xxx",刷新一下,你在这个浏览器上就已经登录了。
运行之前,清除日志
adb logcat -c
运行之后,查看崩溃日志
adb logcat -b crash
仅供参考,没有实际操作过
直接用抓包工具并发登陆,然后把 cookie 复制到浏览器上,不行吗?
com.njzx.care.activity.MainActivity 可能不是该应用的 MainActivity。例如输入 adb shell am start com.tencent.mobileqq/.activity.QQSettingSettingActivity 不会启动 QQ,因为设置相关的 Activity 不是 QQ 的 MainActivity。
所以需要先在 androidmanifest.xml 中指定应用最先启动 Activity 是 com.njzx.care.activity.MainActivity 才行。具体格式如下:
<activity
android:name=".activity.MainActivity"
.......
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
另外也可以通过 monkey 的方式,无需 Activity 启动 app
adb shell monkey -p com.tencent.mobileqq 1
有张图没加载出来。。。仔细一看是 markdown 写错了
将 Rewrite Rule 中的"404"改成"404 Not Found"试试
gnirehtet 和 shadowsocks 我这里都运行成功了。
我电脑是 win7,安装 shadowsocks 前需要先装 openssl,并且把安装路径加入环境变量才行。
我理解的原理是:用 *** 让电脑作为服务器去发送和接收数据,然后通过 adb reverse 把得到的数据传到手机里。
这种方式用来监听手机流量还是很方便的(不用 root 就很爽)
强行去获取结果,也能获取,但是实际上,还不如楼上的用一个变量作为测试结果来的直白。
# coding=utf-8
import unittest
def skip_if_fail_register(func, depend='test_1register'):
def decorator(self):
fail_register = depend in [fail[0]._testMethodName for fail in self._resultForDoCleanups.failures]
test = unittest.skipIf(fail_register, '注册失败')(func)
return test(self)
return decorator
class TestStringMethods(unittest.TestCase):
def test_1register(self):
print('注册账户')
@user1r
def test_2login(self):
print('登录账户')
if __name__ == '__main__':
unittest.main()
python2 似乎也是同样的安装流程
所以 4G 为什么会有问题?DNS 劫持?
requests.get('https://www.baidu.com', verify=False)
加上--uninstall,可以再安装前提前卸载掉应用,避免覆盖安装失败的问题。
。。。这里写错了吧,我看了源码,--force 才是先卸载再安装。
尝试写了个函数,好像也能满足上面提到的场景。。。
def analysis_json(json):
if isinstance(json, list) and isinstance(json[0], dict):
return analysis_json({x: list(map(lambda k: k[x], json)) for x in json[0]})
elif isinstance(json, dict):
return {x: analysis_json(json[x]) for x in json}
else:
return json
是的,超时会判断为失败,这里超时通常是指建立 socket 连接时超时,原因有很多,最有可能是压测是 cpu 负载过高,可以同时多开几台机器试下。至于为什么失败时,name 的值没有带参数,可以看下 locust 的 clients.py 中的_send_request_safe_mode 方法,在请求失败后重新构造了一个 request 对象,用来打印失败信息,只传了 method、url 进去,没有传 params。