首页 > 编程语言 >如何修改Airtest源码&如何提交修改

如何修改Airtest源码&如何提交修改

时间:2022-10-17 22:47:14浏览次数:81  
标签:git 仓库 修改 源码 本地 Airtest

转自公众号:AirtestProject

为什么你自己修改的Airtest源码不生效?(上)

前言

 

相信小伙伴们多少都会遇到想要修改Airtest源码,方便自己脚本编写的情况。这时,不少同学会立即去修改AirtestIDE文件夹下Airtest库的.py文件(如下图),其实这样修改是无效的,并不会达到预期的效果。

 

 

正确的修改Airtest源码的步骤是:

  • 在本地安装python环境

  • 安装Airtest

  • 安装Poco

  • 在本地的Airtest库中修改源码

 在本地安装python环境

Airtest支持Python2和3,但是我们更推荐使用 Python3。如果你愿意的话我们也同样建议使用 virtualenv 等虚拟环境新建一个干净的python环境。各个版本的python可以自行到python官网上下载安装。

python多环境管理扩展阅读:Miniconda安装教程,并使用PyCharm创建相关项目

 

安装Airtest

使用 pip 安装Airtest框架 pip install airtest

注意: 在Mac/Linux系统下,需要手动赋予adb可执行权限,否则可能在执行脚本时遇到 Permission denied 的报错:    

 

# mac系统
> cd {your_python_path}/site-packages/airtest/core/android/static/adb/mac
# linux系统
> cd {your_python_path}/site-packages/airtest/core/android/static/adb/linux
> chmod +x adb

 

安装poco

使用 pip 安装poco框架 pip install pocoui,请注意库的名称为 pocoui,不是poco,请不要填错。

如果你在命令行中使用pip list ,看到同时存在pocopocoui两个库,请把poco卸载,因为pocoui才是正确的库。

 

在本地的Airtest库里面修改源码

完成上述三步以后,其实就是在本地部署了一个python环境来使用Airtestpoco。然后我们可以修改本地安装的Airtest库里面的源码,使得修改生效。

举个例子,打开你本地安装的Airtest库,找到Airtest>--airtest>--core目录下的api.py文件,在touch方法里加一条代码,如下:

 

 

那么你在命令行运行脚本的时候,如果脚本里面写有touch语句,你在touch方法里面增加的print语句也会生效:

 

 

如果想要你修改的内容在IDE也生效的话,只需要将IDE的运行环境改成本地运行环境即可:

 

 

这时候IDE运行时,使用的Airtest库就不是IDE自带的Airtest库,而是你在本地安装的Airtest库,运行一条touch语句,之前对touch方法的修改也会在IDE里面生效了:

 

为什么你自己修改的Airtest源码不生效?(中)

 

前言

Airtest是一个开源项目,所以我们可以在 https://github.com/AirtestProject/Airtest 这里看到它的源码,除了直接看源码学习之外,我们也可以clone或者fork一份项目下来自行修改,同时还能够试用到Airtest的开发分支。

关于GitHub上Airtest源码的远程仓库,我们主要想与大家分享两方面的内容:

  1. 如何在本地安装并使用Airtest在GitHub上的源码;

  2. 如何上传本地的修改到Airtest远程仓库上给其他用户使用。

     

因为内容比较多,所以我们分俩期推文来介绍上述内容。今天这篇文章就是向大家介绍如何在本地安装并使用Airtest在Github上面的源码。

 

从远程仓库上拉取分支

先从1个具体的例子来看看第一部分的内容。Airtest远程仓库最近增加了一些新的修改,包括Android10的初步支持,以及报告部分样式的调整和BUG修复,如果我们想试用一下的话,就需要拉取Airtest仓库里面这个分支的内容到本地上,再进行测试。

具体的步骤如下:

安装Git客户端

首先,我们需要在自己的计算机上安装一个Git客户端(安装包可以从Git官网上获取)。

克隆Airtest的远程仓库到本地

找到你想存放Airtest远程仓库的目录,右键点击Git bush here,然后在命令行中输入以下命令:

git clone [email protected]:AirtestProject/Airtest.git 

运行之后客户端就会把Airtest的远程仓库下载到你的本地目录:

 

如果运行命令以后,并没有开始下载,而是出现如下提示:

 

这表明使用命令行去访问GitHub的时候,需要先填写身份认证,即需要新增SSH密钥到你的GitHub账户上(仅需要做一次):

  1. 在客户端运行clip < ~/.ssh/id_rsa.pub,即可将SSH密钥复制到剪切板上

  2. 登录GitHub,点击右上角的头像,选择Settings

  3. 单击左侧的菜单栏中的SSH and GPG keys

  4. 再单击New SSH key

  5. title里填写自定义的描述标签,在key里面,把剪切板的密钥复制进去

  6. 单击 Add SSH key,再输入你的GitHub密码确认即可

拉取远程仓库的分支到本地

“Android10支持”相关分支的Pull Request是 https://github.com/AirtestProject/Airtest/pull/618 ,也就是说id是618, 要把这个PR拉取到本地,需要先进去刚才克隆的Airtest文件夹里面,右键点击Git bush here,再执行以下代码:

git fetch origin refs/pull/618/head:pr618

 

这条指令的意思是,将远程仓库的618号pull request拉取到本地的pr618分支上。

切换到pr618的分支

使用如下代码即可切换到pr618这个分支:

git checkout pr618

 

将Airtest安装到本地python环境

在测试前还需要先将这个Airtest仓库安装到本地python环境中,在命令行执行pip install -e .(不要忘记最后是个.号),因为我们提升了yosemite.apk的版本号,所以也可能会提示重新安装yosemite.apk

 

安装成功后,你还可以用pip list检查一下,当前的Airtest是不是指向你克隆Airtest的目录。

 

测试支持Android10的分支

自此,我们就把支持Android10的pr拉取到我们本地上了,可以自由进行测试。

 

为什么你自己修改的Airtest源码不生效?(下)

 

前言

前面我们向大家介绍了如何在本地安装并使用Airtest在Github上面的源码。下面我们来讲一下:“如何上传本地的修改到Airtest仓库上给其他用户使用”,即如何给开源项目贡献代码。

需要注意的是,clone操作是不需要项目权限的,只要你注册了GitHub账号,就可以把开源的项目clone下来。但是如果你想要贡献代码,即把你本地的代码上传到项目的远程仓库的话,一般都是不能直接传的,因为大部分人都不是项目的开发者,没有直接push代码的权限,所以贡献代码的流程大致如下:

 

  1. fork原始项目到自己的账号下

  2. 克隆fork到的项目到本地进行修改

  3. 提交修改并同步原始项目仓库的更新

  4. push代码到自己账号的项目仓库里

  5. 向原始项目发起提交申请

  6. 原始项目的管理员同意后,才会merge到原始项目的仓库里

下文是具体的操作方法。

 

 

给开源项目贡献源码

fork开源项目到自己的账户上

首先我们需要打开这个开源项目的url:https://github.com/AirtestProject/Airtest ;然后点击右上角的Fork按钮。

 

等待一段时间后,开源项目AirtestProject/Airtest就被复制到我们自己的仓库里面了,命名为你的用户名/Airtest

 

这个 Fork 后的项目是我们自己账户上的项目,所以我们可以随意修改,且并不会影响到真正的AirtestProject/Airtest项目的。下面我们把它称之为子仓库。原始项目的那个仓库,在下文我们称之为主仓库。

clone子仓库到本地

在本地目录下,右键Git Bush Here,输入以下命令把自己账户上fork得到的仓库(子仓库)clone到本地:

# Clone 到本地的项目目录
git clone https://github.com/your-user-name/Airtest Airtest

 

切换到某个分支

进入刚才clone好的Airtest目录,右键Git Bush Here,默认进去的是master分支。如果我们是在别的分支上做了改动,比如aaa分支,就可以输入以下命令切换到aaa分支:

# 创建并切换到 aaa 分支
git checkout -b aaa

 

提交修改到本地仓库

想要提交本地aaa分支上的修改,我们可以使用以下命令将提交修改到本地仓库上:

# 添加修改过的文件
git add 文件名
# 提交commit
git commit -m "改动的描述"

# 可以使用下述命令添加所有文件
git add -A
同步主仓库的更新

提交commit之后,我们并不能马上push代码,还需要同步主仓库上的更新;因为这部分的内容比较复杂,所以我们需要先来理解一些概念:

  1. 在对子仓库修改的过程中,如果主仓库进行了修改更新,子仓库是不知道且不会同步的

  2. 在主仓库进行了修改更新的情况下,如果子仓库没有同步这部分改动而坚持向主仓库发起pull request,很可能会被主仓库的管理员拒绝

  3. origin是用来向子仓库提交更新的远程仓库,Git会默认把origin与你的子仓库关联在一起,可以通过git remote -vv查看

     

  4. 用来同步主仓库更新的远程仓库,则需要我们手动进行添加,可以将其命名为upstream或是其它你喜欢的名字,还可以通过git remote -v查看仓库之间的关联

     

了解了上述的概念之后,我们假设已经手动添加了upstream,并且upstream已经更新了很多提交,我们就可以用以下的方式拉取并合并upstream上的更新:

# ①切换到 master 分支
git checkout master
# ②使用 rebase 模式拉取 upstream/master 上的更新,然后与本地的master合并
git pull --rebase upstream master:master
# ③切换到 aaa 分支
git checkout aaa
# ④使用 rebase 模式合并本地的 aaa 和 master 分支
git rebase master

或者我们还可以使用下面这种方式拉取合并upstream的更新:

# ①切换到 master 分支
git checkout master
# ②获取 upstream 上的 master 分支
git fetch upstream master
# ③切换到 aaa 分支
git checkout aaa
# ④使用 rebase 模式合并本地的 aaa 和 upstream/master 分支
git rebase upstream/master
将修改的代码push到子仓库上

完成了上述的更新合并以后,我们才可以把代码push到子仓库上:

# 将本地 aaa 分支的代码 push 到 origin 的 aaa 分支
git push origin aaa
向主仓库发起pull request

push代码以后,会跳出GitHub网站的登录弹窗,登陆后会智能识别并弹出按钮 Compare & pull request,点击后填写一些信息即可向主仓库发起pull request

需要注意的是,主仓库的开发人员收到你的申请以后,他们还会对你的改动进行审核(即像上一篇推文讲述的那样,把你的代码拉取到本地测试一下),只有审核通过才会真正被merge到主仓库上。

举个例子,在我们Airtest项目下,有一个项目支持设备列表的文档 https://github.com/AirtestProject/Airtest/blob/master/docs/wiki/platforms.md ,但是因为设备很多,我们更新不过来,所以有一些热心的用户,就会在自己本地fork的项目上面修改了这个platforms.md文档,然后再向我们发起一个pull request

 

 

项目的管理员收到这个pull request之后,就会查看用户修改了什么地方:

 

 

如果这个用户的pull request没有问题,Airtest的项目管理员就会 merge 这个pull request到主仓库上。至此,该用户就可以成为github上面3k star项目的contributor啦!

标签:git,仓库,修改,源码,本地,Airtest
From: https://www.cnblogs.com/songzhenhua/p/16801007.html

相关文章