美文网首页
Python virtualenv 搭建Self Test Co

Python virtualenv 搭建Self Test Co

作者: ilianZnkPETs | 来源:发表于2017-09-01 17:28 被阅读117次

在这篇文章开始阅读之前,需要准备如下:

  • git
  • python 2/3
  • virtualenv

要求用git 是为了面对最现实的日常工作环境,python2/3 兼容,python 的virtualenv 是实现python 语言开发SelfTestCode 开发环境配置的核心工具。


事情是这样的,在阅读很多从github 上面clone下来的项目里面,如flask,eventlet。在/tests 下面有不少写得很不错的testcase,所以想要按照这种规范来布置项目。

git clone https://github.com/pallets/flask.git

可是遇到了一些问题,比方说:

  • testcase 需要install package 才能跑起来;
  • 安装之后的code 都被拷贝进了lib/site-packages下面,而不是在repo下面的code。如果想改代码,就得移步到site-packages下面改;
  • 就算改完了,如果想要git add, git commit也还要把code 拷贝回repo下面;

或者换个套路:
在test case的code 都中加入:

sys.path.append("/path/to/git_repo")

这是其实是一种很朴实的walk through,只是无法面对repo 移动位置之后需要做调整的命运,而且丑。用python的人应该都有种意识,感觉到这种实践方法不够完备。

我其实只是想要:

  • 在repo中能够一边改code , 一边改test case,同时也能用test case测项目的code;
  • 除了test case中没有多余的部分,何况看flask,eventlet中, test case 中的import 都是直接import项目,没有多余的部分:
import pytest

from flask import Markup
from flask.json.tag import TaggedJSONSerializer, JSONTag


直到有一天,在pip 文档中发现了下面的这段命令:

(venv) >>> pip install -e .      #project in current directory

这里的.指的是repo文件夹的根目录,里面有setup.py 文件,来与上面这个命令对应。

#!/usr/bin/env python
import os
from setuptools import setup, find_packages

setup(
    name = "Project_name",
    version = '0.1',
    description = "",
    long_description = "",
    author = "",
    url="",
    packages=find_packages(exclude=['test', 'test.*']),
    install_requires=[],
)

这会在site-packages 文件夹中生成一个链接,对应的就是repo的目录。这样,virtualenv 就认为这个repo 下的lib文件已经被安装了,也将这个目录导入sys.path中,不需要额外在代码中添加多余的部分。

然后就可以按照大批开源项目的tests 文件夹的结构构件我们的Self Test Code了,对应我们项目的结构分别对各个单元写对应的测试。


关于Self Test Code 这个主题,在此展开对应的Martin Fowler的博客文章

以下个人观点。打一个比方,开发如果是走路的话,迈左脚是写代码,迈右脚就是做测试。只写功能不做测试,或者做不完整的测试,就好比单脚跳走路或者坡脚走路,不会健康。

对于其他编程语言,也可以寻求类似模式。

相关文章

网友评论

      本文标题:Python virtualenv 搭建Self Test Co

      本文链接:https://www.haomeiwen.com/subject/ybftwttx.html