2023-10-12
测试开发
00

小心调用 subprocess,避免因 shell=True 而命令行解析错误

Python 中的 subprocess 模块可以轻松实现执行外部命令和进程的功能。我们经常会用它来调用一些命令行工具的功能。 但是在使用 subprocess 调用复杂命令时,有一个容易犯但影响比较大的错误 - 使用shell=True参数,导致命令行解析错误,子进程执行失败。

举例1

第一次遇到这个问题的场景是,我在一个项目中需要使用 Airtest 框架生成测试报告。代码如下:

python
cmd = [ "airtest", "report", "air", "--log_root", "log_dir", "--outfile", "log.html" ] ret = subprocess.call(cmd, shell=True, cwd="suites")

执行后,报告文件并没有生成。经检查发现, vérité 因为 shell=True 将 airtest report air ... 这个命令作为一个字符串传给 shell 执行,导致命令行被错误解析,子进程实际上失败执行。

解决方法也很简单,只需要删除 shell=True 参数,直接传入命令列表:

python
ret = subprocess.call(cmd, cwd="suites")

这样,命令行被正确解析为多个参数,子进程执行成功,报告文件生成正常。

2023-10-12
adb
00

Android自动化测试中短信的操作技巧

一、发送短信的机制简介

短信作为一种重要的移动通信方式,在APP测试中也经常需要验证短信功能的正确性。为了避免大量手动操作设备发送短信的低效率,我们可以利用ADB命令达到自动发送短信的目的。

短信的发送需要手机短信APP的支持。命令行通过启动短信APP并传入参数,让APP负责发送。整个过程不需要实际操作设备。

二、发送方式介绍

自动发送短信主要有两种发送方式:

  1. startActivity方式启动短信APP

这种方式通过启动短信APP的界面,并插入电话号码、短信内容等信息,让APP发送短信。

  1. Broadcast方式发送广播

这种方式是直接发送一个系统广播,系统会根据广播信息自动发送短信,无需打开APP界面。

三、命令解析

我们来看一下具体的ADB命令:

2023-10-12
git
00

引言:

1.安装Git的步骤省略,安装完毕后,在终端输入$ git,下方输出git的提示信息,则安装成功;

2.本地新建目录,cd 进入该目录,执行 $ git init ,则表示将该目录初始化为一个git版本仓库(repository)

(如果直接使用$ git clone命令复制远程仓库到本地,则不用初始化,默认复制的目录就是一个git仓库)

3.此时执行$ git branch,可以查看该仓库的分支,默认只有一个master主分支;

4.Git与SVN的区别除了是分布式管理之外,Git还有工作区和暂存区(stage)的概念。

cd 进入仓库,$ls -a命令查看仓库下所有文件,工作区就是正常repository中能看到的需要编辑的文件,除此之外,还有一个隐藏文件夹.git,它不属于工作区,而是Git的版本库。

.git中存放了很多东西,其中有一个index文件夹,这就是.git的暂存区; 另外还有一个HEAD指针文件,默认指向Git为我们自动创建的第一个分支master。

image.png

2023-10-12
adb
00

aapt命令在Android测试中的强大实用

一、aapt命令介绍

aapt(Android Asset Packaging Tool)是Android系统提供的一个打包Android应用资源的命令行工具。它可以用来列出、查看和处理apk包中的资源文件。掌握aapt命令可以帮助我们更好地理解Android应用的结构,以及修改已有的apk。

bash
Android Asset Packaging Tool Usage: aapt l[ist] [-v] [-a] file.{zip,jar,apk} List contents of Zip-compatible archive.
2023-10-08
开源项目
00

快速搭建自己的博客

VanBlog

Image

image.png

VanBlog是一款简洁、实用、优雅的个人博客系统,支持全自动按需申请HTTPS证书、黑暗模式、移动端自适应和评论功能。它内置了流量统计和图床,并集成了评论系统。此外,VanBlog还具有无限的可扩展性,提供完备的后台管理面板,支持黑暗模式、移动端、一键上传剪贴板图片到图床,并带有强大的编辑器。