• 15
  • 14
分享
  • 测开入门篇《环境管理、编码规范、项目结构》——软件测试圈
  • 北极 2021-02-02 14:57:33 字数 6112 阅读 1666 收藏 14

一、前提准备

       Python环境:python3.7是python3里面目前最稳定的一个版本,3以上的版本都没有问题。

电脑:Windows10家庭版

二、虚拟环境

       Python虚拟环境的主要目的是:为了给不同的工程创建互相独立的运行环境。在虚拟环境下,每一个工程都有自己的依赖包,而与其它的工程无关。

       不同的虚拟环境中同一个包可以有不同的版本。并且,虚拟环境的数量没有限制,我们可以轻松地用virtualenv或pipenv等工具来创建多个虚拟环境。

1.png

1、virtualenv的安装和应用(windows)安装步骤:

  1. pip 安装 virtualenv,pip install virtualenv

  2. pip安装虚拟环境管理包,pip install virtualenvwrapper-win(这个是windows下的管理工具)

    注意:如果是用的mac或者在linux上安装,直接pip install virtualenvwrapper即可。

  3. 创建一个存放虚拟环境的目录(建议命名为.env或者.virtualenv,也可以叫其它名字,注意不要中文命名)。

2.png

   4.配置环境变量(变量名:WORKON_HOME,值:上面创建的目录路径)

3.png

       查看电脑中的虚拟环境,输入workon,会显示所有的虚拟环境:

4.png

       创建虚拟环境有一些命令,virtualenv的使用命令:

wokon列出所有的虚拟环境
workon[name]进入指定的虚拟环境
deactivate退出当前的虚拟环境
mkvirtualenv[name]创建虚拟环境
rmvirtualenv[name] 删除虚拟环境

       包安装:

       虚拟环境中,安装对应的依赖包,进入虚拟环境直接使用pip install进行安装。

mkvirtualenv -p python3 qinghan

       如果电脑里只安装了python3,那么直接输入mkvirtualenv qinghan

5.png

       后面你看到多了这个虚拟环境名,创建虚拟环境后会自动进入虚拟环境里面。

6.png

       先输入exit();再输入deactivate

       进入某个虚拟环境,可以这样输入:例如workon qinghan

       删除某个虚拟环境,可以这样输入:rmvirtualenv tester

       输入pip list可查看当前电脑已安装的python相关的依赖包。

       查看虚拟环境中有多少依赖包:

       先输入workon qinghan再输入pip list

       在qinghan这个虚拟环境中安装一个django包:

pip install django

7.png

       这个包在其它虚拟环境中是看不到的,独立隔开的。

       卸载包pip uninstall django

       使用virtualenv这个管理工具有个缺点:

       安装django的时候,会把django相关的依赖包都安装下来。安装django的时候自带安装的pytz和sqlparse包,卸载的时候并没有卸载。

2.pipenv的安装和使用

       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算法将包的名称和版本,及依赖关系生成哈希值,可以保证包的完整性。

Pycharm会自动定位到当前工程的路径下面:

8.png

       我这里是前面已经安装过了。装好之后,不需要配置环境变量,直接就可以用了。

       在工程里创建虚拟环境,直接在工程里面输入pipenv install

       这里默认的是python37,所以使用默认的python37解释器创建虚拟环境。

9.png

pipenv管理模块和包

       在虚拟环境中安装模块或者包 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

pipenv install有3个作用:

  1. 当前路径下不存在虚拟环境,它就创建虚拟环境。

  2. pipenv install 相关模块名,比如pipenv install requests那么它就是安装一个requests模块的意思。

  3. url = "https://pypi.org/simple"是国外源,需换成Python国内源:清华大学源https://pypi.tuna.tsinghua.edu.cn/simple

10.png

       现在安装个包:pipenv install requests

       安装的时候,会默认把安装的包记录在[packages]下面:

11.png

       如果想安装某个包只想在开发环境下用,不想放在[packages]下面,可以放在[dev-packages]下面,可通过--dev指定一下:

12.png

       一个Pipfile文件和一个Pipfile.lock这两个文件,是用来记录当前环境下的相关的依赖包的,以及在服务器上恢复环境用的。

       Pipfile.lock这个文件记录的更完整,比如在虚拟环境中安装了requests了,但是requests有依赖其它的包吗?那就记录在Pipfile.lock文件里面。Pipfile.lock这个文件不可随意修改!

       Pipfile.lock文件这个记录的很准确很详细:

13.png

       比如在这个工程下开发了一个项目,那么接下来要把这个项目部署到服务器里面,Pipfile.lock文件和项目代码一起传到服务器上面去。

       在服务器上通过Pipfile.lock文件可以恢复当前开发的环境,通过对应的命令可以进行恢复。

       在哪个路径下运行pipenv这个命令,那么就默认在哪个路径下面创建虚拟环境。

       Pipfile文件中这里是可以修改的:

14.png

       安装的包,要在服务器上用的话,那就装在[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]下面的包。

15.png

       也可以把[dev-packages]的包恢复进来,输入命令pipenv install --dev

       pipenv这个工具比virtualenv强大一些。pipenv是对virtualenv的一个封装。

       在环境里如果要卸载相关的依赖包,例如卸载requests。requests下面有4个相关的依赖包。

       这里卸载requests,会把requests下面依赖的包也会进行卸载。而virtualenv卸载的时候只会卸载requests,requests对应的依赖它是不会卸载的。

       卸载命令:pipenv uninstall requests

       一个虚拟环境只能装一个requests。

       requests和依赖包的关系,requests是依赖这些模块实现的:

16.png

       只能通过graph这个看,不能通过json文件看。

       卸载requests后,它的相关依赖是保存下来了,这些包掉到外面来。

       但是将这2个文件拷贝到服务器里面去,在恢复的时候,那么它所依赖的包是不会恢复进去的。

       如果使用virtualenv这个工具,virtualenv也可以把虚拟环境导出来。

       比如把requests卸载了,用virtualenv导出来的相关环境,去服务器上进行恢复的时候,requests虽然没有了,但是requests下面的依赖包也会恢复进去。

       导出virtualenv相关的依赖包,可以导出一个requirements.txt文件,用的virtualenv肯定有这个文件。

3.导出虚拟环境为requirements.txt文件

       requirements.txt文件,里面记录了当前程序的所有依赖包及版本号。

       其作用是用来在另一个环境上重新构建项目所需要的运行环境依赖。

导出当前环境到requirements.txtpip freeze > requirements.txt
使用requirements.txt恢复环境pip install -r requirements.txt

17.png

       拿到这个文件,也可以恢复到服务器上去。

       pipenv可以通过Pipfile和Pipfile.lock文件进行环境恢复。也可以通过requirements.txt进行环境恢复。

4.pipenv的相关使用命令

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,这个命令只能操作当前所在目录下的虚拟环境。

18.png

       删除完虚拟环境,Pipfile和Pipfile.lock文件以及文件夹不会被删除,需要我们手动来删除。

       通过virtualenv创建的可以这样删除:

rmvirtualenv fff

       通过pipenv --where列出当前虚拟环境所在的目录。

       虚拟环境是存放在virtualenv下面的。查看当前虚拟环境存放在哪,输入命令pipenv --venv

       卸载了某些包,可以通过pipenv lock这个命令重新生成lock文件。

       现在这个lock文件是同步生成的。如果把lock文件删除了,可以通过这个命令生成lock文件。

5.需要在虚拟环境中起项目

       如果没进入虚拟环境,就没有相关的依赖包,启动项目就启动不了。

三、Python代码规范

       1.pep8(python代码样式规范)文档地址(中文):

https://blog.csdn.net/ratsniper/article/details/78954852

       2.pep257 (python文档字符串相关的约定):文档地址:

https://github.com/qiuxiang/pep/blob/master/peps/257.md

       3.pep20(python代码的理念):文档地址:

https://www.python.org/dev/peps/pep-0020/

       重点:

19.png

图片来自网络

       调整代码格式:Ctrl+Alt+L

       注释:

20.png

图片来自网络

21.png

图片来自网络

       模块和包相关规范:

22.png

图片来自网络

       命名规范:

23.png

图片来自网络

四、工程结构化

       代码要写得简洁明了,项目里面的结构也得简洁明了,别人点开项目文件就知道哪个文件里面放的什么东西。

结构介绍:

24.png

图片来自网络

       一个项目里肯定有其它的文件夹,但是一个项目里有这些文件夹,显得规范一些,哈哈哈。


作者:清菡软件测试

原文链接:https://blog.csdn.net/weixin_41033105/article/details/111087809#comments_14468333

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、自动化测试众所周知,自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面(GUI)的自动化测试方法具有模拟用户行为和过程可视化的特点,因此受到了广大入门自动化人士的喜爱。诸如:QTP、Selenium等都具有强大的功能支撑和丰富的知识库,而逐渐成为自动化测试人士必备工具之一。然而,伴随着敏捷开发和持续交付在软件开发项目中的普及和应用,测试工作的重心不得不进一步前移。而由于用户界面的开发通常处于软件开发的末端且缺陷修复成本较大,因此基于GUI的自动化测试无法很好的适用于此类项目。基于应用程序接口(API)的自动化测试却可以很好的解决了此类问题。二、接口自动化测试在分层测试策略中各...
            1 1 998
            分享
          •   问题引出  不知道大家有没有遇到这样的测试场景:一个Web应用,待测功能很简单,只需要点击按钮启动运行,经过一系列内部运算,返回给用户一个结果列表。  从可见的交付给用户的最上层UI功能来看,待测功能只是一个简单的“启动”—“观察结果”。  但是,我想当测试人员接手这样一个测试项目的时候,恐怕应该是先“惊喜”后“恐慌”吧?!  “惊喜”:这么简单,点一下看一下结果不就测完了?  “恐慌”:这么简单?会不会还有什么测试点我遗漏了,怎么感觉有点惴惴不安呢?!  这样的测试场景,我想几乎每个测试人员在职业生涯中都会遇到。那么,是不是真的就是“点一点”看看结果就行了呢?显然不是。  那么,对于这样...
            0 0 676
            分享
          • 对于一个优秀的Java技术人员来说,成为Java架构师是一个很好的职业发展方向,相比于普通的Java技术人员,Java架构师要求更高,不仅有丰富的编码经验,而且还要熟悉硬件性能优化、内核调试、网络故障排查、系统安全、分布式系统设,还有了解国内外技术的新趋势和特点,最重要的是,还要善于与人沟通,敢于排除不同意见,敢于承担责任,了解团队内工程师的特点,善于将他们组成一个整体。对于想要成为Java架构师的人员来说,可以着重培养以下几个方面的能力:1、知识广度了解国内外技术的新趋势和特点,以及使用该技术能够解决什么问题,同一种业务使用不同的技术存在什么样的优缺点,相比较而言,哪一种能符合公司要求。2、...
            0 0 806
            分享
          •   根据美国商标和专利局(USPTO)公示的专利清单,苹果获得了一项涉及水下正常运行 iPhone 的技术专利。该 iPhone 具备对水不敏感的光学触摸传感器,不仅支持用户湿手操作,而且可以在水下操作 iPhone。  IT之家根据苹果专利介绍获悉,苹果会在 iPhone 中使用全内反射触摸传感器(total internal reflection touch sensor)在内的二维光学触摸传感器。在 iPhone 浸入水中,或者在湿气比较大的场景下依然可以收集触控输入。  屏幕中的像素阵列可正常显示图像,覆盖层可以与像素阵列重叠。当物体接触显示器覆盖层的表面时,光源可以照亮诸如用户手指的...
            0 0 709
            分享
          • IT之家 9 月 27 日消息,苹果 iOS 16.1 目前处于 Beta 测试阶段,其中包括对实时活动 API 的支持。该 API 允许开发者向锁屏界面或灵动岛添加实时通知。随着 iOS 16.1 的不断测试,苹果现已发布了完整的实时活动设计指南,其中概述了开发者在其 App 中添加实时活动的规范。对于苹果 iPhone 14 Pro 和 iPhone 14 Pro Max,两款新机的全新“灵动岛”设计可以让实时活动显示在屏幕顶部。而其他机型可以显示在锁屏界面。苹果官方列出了以下要求:为具有定义的开始和结束的任务和实时事件提供实时活动。只呈现最重要的内容。只在有新内容可用时更新实时活动,只在...
            0 0 1233
            分享
      • 51testing软件测试圈微信