作者:清菡
博客:oschina、云 + 社区、知乎等各大平台都有。
测试平台是做什么的?
测试开发研发的测试平台是给点点点的人用的,可以帮助我们做自动化测试、用例管理、报表生成等,提高测试工作效率。
例如用市面上的 postman 做的一些测试,不符合公司项目的实际。但是自动化测试平台可以根据公司实际项目需求做定制化开发。
Python 环境:python3.7 是 python3 里面目前最稳定的一个版本,3 以上的版本都没有问题。
电脑:Windows10 家庭版
Python 虚拟环境的主要目的是:为了给不同的工程创建互相独立的运行环境。在虚拟环境下,每一个工程都有自己的依赖包,而与其它的工程无关。
不同的虚拟环境中同一个包可以有不同的版本。并且,虚拟环境的数量没有限制,我们可以轻松地用 virtualenv 或 pipenv 等工具来创建多个虚拟环境。
1.pip 安装 virtualenv
pip install virtualenv
2.pip 安装虚拟环境管理包
pip install virtualenvwrapper-win
(这个是 windows 下的管理工具)
注意:如果是用的 mac 或者在 linux 上安装,直接pip install virtualenvwrapper
即可。
3.创建一个存放虚拟环境的目录(建议命名为.env 或者.virtualenv,也可以叫其它名字,注意不要中文命名)。
4.配置环境变量(变量名:WORKON_HOME
,值:上面创建的目录路径)
查看电脑中的虚拟环境,输入workon
,会显示所有的虚拟环境:
wokon | 列出所有的虚拟环境 |
---|---|
workon[name] | 进入指定的虚拟环境 |
deactivate | 退出当前的虚拟环境 |
mkvirtualenv[name] | 创建虚拟环境 |
rmvirtualenv[name] | 删除虚拟环境 |
包安装:
虚拟环境中,安装对应的依赖包,进入虚拟环境直接使用pip install
进行安装。
mkvirtualenv -p python3 qinghan
如果电脑里只安装了 python3,那么直接输入mkvirtualenv qinghan
后面你看到多了这个虚拟环境名,创建虚拟环境后会自动进入虚拟环境里面。
先输入exit();
再输入deactivate
进入某个虚拟环境,可以这样输入:例如workon qinghan
删除某个虚拟环境,可以这样输入:rmvirtualenv tester
输入pip list
可查看当前电脑已安装的 python 相关的依赖包。
查看虚拟环境中有多少依赖包:
先输入workon qinghan
再输入pip list
在 qinghan 这个虚拟环境中安装一个 django 包:
pip install django
这个包在其它虚拟环境中是看不到的,独立隔开的。
卸载包pip uninstall django
安装 django 的时候,会把 django 相关的依赖包都安装下来。安装 django 的时候自带安装的pytz
和sqlparse
包,卸载的时候并没有卸载。
pipenv 集成了 pip,virtualenv 两者的功能,且完善了两者的一些缺陷。
过去用 virtualenv 管理 requirements.txt 文件可能会有问题,Pipenv 使用 Pipfile 和 Pipfile.lock。
Pipfile 文件用来记录项目依赖包列表,Pipfile.lock 文件记录了固定版本的详细依赖包列表,查看依赖关系是十分方便。
支持 python2 和 python3。支持 mac,win,linux,在各个平台的命令都是一样的。各个地方使用了哈希校验,无论安装还是卸载包都十分安全。
安装:pip install pipenv
第一步创建文件夹 | mkdir py3env |
---|---|
第二步进入文件夹 | cd py3env |
第三步初始化虚拟环境 | pipenv install |
创建好虚拟环境后会生成:一个 Pipfile 文件和一个 Pipfile.lock。
项目提交时,可将 Pipfile 文件和 Pipfile.lock 文件一并提交,待其他开发克隆下载。
Pipfile.lock 文件是通过 hash 算法将包的名称和版本,及依赖关系生成哈希值,可以保证包的完整性。
我这里是前面已经安装过了。装好之后,不需要配置环境变量,直接就可以用了。
在工程里创建虚拟环境,直接在工程里面输入pipenv install
这里默认的是 python37,所以使用默认的 python37 解释器创建虚拟环境。
在虚拟环境中安装模块或者包 pipenv install 包名
(注意在当前项目路径下执行以上命令)
通过–-dev
指明只安装在开发环境中(开发环境是你当前开发的环境,生产环境是上线部署的实际环境)
pipenv install requests --dev
安装包记录是在 [dev-packages] 部分,或是 [packages] 部分。
在安装时,指定–-dev
参数,则只安装 [dev-packages] 下的包;若安装时不指定–-dev
参数,只会安装 [packages] 包下面的模块。
卸载虚拟环境的模块包 | pipenv uninstall 包名 |
---|---|
查看安装包及依赖关系 | pipenv graph |
生成 requirements.txt 文件 | pipenv lock -r --dev > requirements.txt |
通过 requirements.txt 安装环境 | pipenv install -r requirements.txt |
1.当前路径下不存在虚拟环境,它就创建虚拟环境。
2.pipenv install 相关模块名
,比如pipenv install requests
那么它就是安装一个 requests 模块的意思。
3.url = "https://pypi.org/simple"
是国外源,需换成 Python 国内源:清华大学源https://pypi.tuna.tsinghua.edu.cn/simple
现在安装个包:pipenv install requests
安装的时候,会默认把安装的包记录在 [packages] 下面:
如果想安装某个包只想在开发环境下用,不想放在 [packages] 下面,可以放在 [dev-packages] 下面,可通过--dev
指定一下:
一个 Pipfile 文件和一个 Pipfile.lock 这两个文件,是用来记录当前环境下的相关的依赖包的,以及在服务器上恢复环境用的。
Pipfile.lock 这个文件记录的更完整,比如在虚拟环境中安装了requests
了,但是requests
有依赖其它的包吗?那就记录在 Pipfile.lock 文件里面。Pipfile.lock 这个文件不可随意修改!
Pipfile.lock 文件这个记录的很准确很详细:
比如在这个工程下开发了一个项目,那么接下来要把这个项目部署到服务器里面,Pipfile.lock 文件和项目代码一起传到服务器上面去。
在服务器上通过 Pipfile.lock 文件可以恢复当前开发的环境,通过对应的命令可以进行恢复。
在哪个路径下运行pipenv
这个命令,那么就默认在哪个路径下面创建虚拟环境。
Pipfile 文件中这里是可以修改的:
安装的包,要在服务器上用的话,那就装在 [packages] 里,如果只是开发环境用的话就装在 [dev-packages]
= "*"
这个不用管什么意思。
要在 class_01day 文件夹里面再创建一个虚拟环境,把 Pipfile 文件和 Pipfile.lock 文件复制过来。把项目上传到服务器的时候,同样也把这 2 个文件拿到服务器里面来。
比如服务器下面的工程是 class_01day,是服务器下面项目的一个路径。
在服务器下面恢复当前代码运行的环境,进入路径下面,运行命令pipenv install
创建个虚拟环境就可以了。
注意:不是只复制这 2 个文件就行了啊。要把项目代码和这 2 个文件一起传过去。通过这 2 个文件可以把开发时候的所有的环境恢复到服务器上面。
查看当前虚拟环境下已经安装好的依赖包:
pipenv graph
开发环境里面的包是不会恢复进去的。
之前在 test_01 文件夹下的 Pipfile 文件里手动添加的flask = "*"
。
在把这 2 个文件复制到 python_ck01 文件夹下,恢复的时候会自动化安装 [packages] 下面的包。
也可以把 [dev-packages] 的包恢复进来,输入命令pipenv install --dev
pipenv 这个工具比 virtualenv 强大一些。pipenv 是对 virtualenv 的一个封装。
在环境里如果要卸载相关的依赖包,例如卸载requests
。requests
下面有 4 个相关的依赖包。
这里卸载requests
,会把requests
下面依赖的包也会进行卸载。而 virtualenv 卸载的时候只会卸载requests
,requests
对应的依赖它是不会卸载的。
卸载命令:pipenv uninstall requests
一个虚拟环境只能装一个requests
。
requests 和依赖包的关系,requests 是依赖这些模块实现的:
只能通过 graph 这个看,不能通过 json 文件看。
卸载requests
后,它的相关依赖是保存下来了,这些包掉到外面来。
但是将这 2 个文件拷贝到服务器里面去,在恢复的时候,那么它所依赖的包是不会恢复进去的。
如果使用 virtualenv 这个工具,virtualenv 也可以把虚拟环境导出来。
比如把 requests 卸载了,用 virtualenv 导出来的相关环境,去服务器上进行恢复的时候,requests 虽然没有了,但是 requests 下面的依赖包也会恢复进去。
导出 virtualenv 相关的依赖包,可以导出一个 requirements.txt 文件,用的 virtualenv 肯定有这个文件。
requirements.txt 文件,里面记录了当前程序的所有依赖包及版本号。
其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖。
导出当前环境到 requirements.txt | pip freeze > requirements.txt |
---|---|
使用 requirements.txt 恢复环境 | pip install -r requirements.txt |
拿到这个文件,也可以恢复到服务器上去。
pipenv 可以通过 Pipfile 和 Pipfile.lock 文件进行环境恢复。也可以通过requirements.txt
进行环境恢复。
pipenv –rm | 删除虚拟环境 |
---|---|
pipenv –where | 列出本地工程路径 |
pipenv –venv | 列出虚拟环境路径 |
pipenv –py | 显示 Python 解释器信息 |
pipenv graph | 查看包依赖 |
pipenv lock | 生成 lock 文件 |
pipenv –rm | 删除虚拟环境 |
pipenv shell | 直接进入虚拟环境 |
exit | 退出虚拟环境 |
pipenv 是对 virtualenv 的封装。pipenv 的底层还是 virtualenv 和 pip 实现的。
pipenv 集成了 virtualenv 和 pip 两个工具。
virtualenv 只能通过 requirements.txt 进行环境恢复。
通过 virtualenv,不用看当前所在的路径,通过命令操作所有的虚拟环境。
通过 pipenv,这个命令只能操作当前所在目录下的虚拟环境。
删除完虚拟环境,Pipfile 和 Pipfile.lock 文件以及文件夹不会被删除,需要我们手动来删除。
通过 virtualenv 创建的可以这样删除:
rmvirtualenv fff
通过pipenv --where
列出当前虚拟环境所在的目录。
虚拟环境是存放在 virtualenv 下面的。查看当前虚拟环境存放在哪,输入命令pipenv --venv
卸载了某些包,可以通过pipenv lock
这个命令重新生成 lock 文件。
现在这个 lock 文件是同步生成的。如果把 lock 文件删除了,可以通过这个命令生成 lock 文件。
如果没进入虚拟环境,就没有相关的依赖包,启动项目就启动不了。
文档地址(中文):
https://blog.csdn.net/ratsniper/article/details/78954852
文档地址:
https://github.com/qiuxiang/pep/blob/master/peps/257.md
文档地址:
https://www.python.org/dev/peps/pep-0020/
重点:
调整代码格式:Ctrl+Alt+L
注释:
模块和包相关规范:
命名规范:
代码要写得简洁明了,项目里面的结构也得简洁明了,别人点开项目文件就知道哪个文件里面放的什么东西。
一个项目里肯定有其它的文件夹,但是一个项目里有这些文件夹,显得规范一些,哈哈哈。
公众号 "清菡软件测试" 首发,更多原创文章:清菡软件测试 105+ 原创文章,欢迎关注、交流,禁止第三方擅自转载。