python helper函数_用Python中的helper函数对ABC进行单元测试
我想知道是否可以在Python的测试环境中更改helper函数。我的应用程序结构如下:app/
trader/
__init__.py
strategies/
__init__.py
base_strategy.py
util.py
models/
__init__.py
base_model.py
tests/
__init__.py
strategies/
__init__.py
stub_strategy.py
test_strategies.py
models/
__init__.py
stub_model.py
其中每个base_*.py是一个抽象基类,从tests目录中的每个stub_*.py文件继承而来。在我的util.py文件中,有一个helper函数,它可以查看trader/strategies/models目录并注册所有可用的模型:
^{pr2}$
现在我的问题是:在我的BaseTradingStrategy-类中,我有一个方法,它使用existing_alpha_models列表来检查模型是否存在。在from abc import ABC, abstractmethod
from .util import existing_alpha_models
class BaseTradingStrategy(ABC):
"""BaseTrading Code comes here"""
@abstractmethod
def some_abs_method(self):
raise NotImplementedError
def register_model(self, model_name):
if model_name not in existing_alpha_models:
raise ValueError
对于单元测试,我已经创建了存根类,它们不在trader/strategies/models目录中,因此没有在existing_alpha_models列表中注册。当我想用pytest测试ABC的功能时,许多测试都失败了,因为检查模型可用性的方法失败了。一个简单的解决方案是将存根类放在我的应用程序的trader目录中,但我宁愿将我的测试代码与应用程序的其余部分分开。我可能还可以将existing_alpha_models作为基类的属性,但是除了让测试通过之外,我并不认为这样做有什么意义。有没有一种方法可以在existing_alpha_models中注入存根类进行单元测试,这样ABC的测试在不改变基类的情况下不会失败吗?在
------------编辑------------------
我现在有两个我的测试代码的工作版本。一个是使用@hoefling的verison,我只需将alpha_models添加到existing_alpha_models列表中:from tests.strategies import StubTradingStrategy
from tests.strategies.alpha_models import StubModel, StubModel2, StubModel3
from trader.strategies.util import existing_alpha_models
existing_alpha_models.extend(["StubModel", "StubModel2", "StubModel3"])
还有一个版本,我将模型添加到alpha_models模块并重新加载2个模块:import importlib
from trader.strategies import alpha_models
from tests.strategies.alpha_models import StubModel, StubModel2, StubModel3
setattr(alpha_models, "StubModel", StubModel)
setattr(alpha_models, "StubModel2", StubModel2)
setattr(alpha_models, "StubModel3", StubModel3)
from nutrader.strategies import util
import nutrader.strategies.base_strategy
importlib.reload(util)
importlib.reload(nutrader.strategies.base_strategy)
from tests.strategies import StubTradingStrategy
第二个版本的优点是它允许我实际测试util代码,但是它也在我的测试代码中引入了潜在的风险,因为某些模块存在2个版本,这在生产环境中不是这样。这是个好主意,还是应该在测试环境的第一个版本中保留它?在
python helper函数_用Python中的helper函数对ABC进行单元测试相关推荐
- java反转函数_在JAVA中,下列哪个函数可用于字符串的反转?
在JAVA中,下列哪个函数可用于字符串的反转? 更多相关问题 很多危机是无法准确预测的,必须为危机做好准备,包括().通信计划以及重要关系的建立等. (A) 危 幼儿园科技小制作可分为模型类.动力类. ...
- mysql数据库求平均值的函数_使用MySQL中的AVG函数求平均值的教程
MySQL的AVG函数是用来求出各种记录中的字段的平均值. 要了解AVG功能考虑EMPLOYEE_TBL表具有以下记录: mysql> SELECT * FROM employee_tbl; + ...
- matlab中find函数_在R中使用Matlab函数
R, Matlab MATLAB是一款商业数学软件, R是一个拥有庞大工具库的数据统计.建模.可视化分析软件.R 不仅支持C/C++, python代码的运行和工程移植, 也支持在R中使用MATLAB ...
- python3 range函数_为什么python3中的xrange函数不能用
升级到python3的同学应该会注意到以前经常用的xrange没了! 是的,python3的range就是xrange.直接看效果!Python 2.7.13 (v2.7.13:a06454b1afa ...
- create报错不是函数_各种SQL中关于日期函数的那些事(建议收藏)
hive.presto.spark.impala.mysql常用日期时间函数吐血整理 使用的SQL多了不知道大家有没这样的困惑,SQL的语法在大多数方面是一致的,如SELECT,JOIN,GROUP ...
- java string()函数_从Java中的String函数返回String构建器?
我有以下程序,我必须将字符串附加到另一个字符串,我使用字符串构建器以标准方式执行.但是,即使在将其转换为toString()之后,该函数也不允许我返回ab.我想问为什么? import java.ut ...
- mounted钩子函数_解决Vue中mounted钩子函数获取节点高度出错问题
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略
Python之 sklearn:sklearn.preprocessing中的StandardScaler函数的简介及使用方法之详细攻略 目录 sklearn.preprocessing中的Stand ...
- python自带的sum()函数和numpy库中的sum()函数的区别
在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
最新文章
- cookie用法之一,最简单cookie操作
- Java黑皮书课后题第5章:*5.18(使用循环语句打印4个图案)使用嵌套的循环语句,编写4个独立的程序打印下面的图案
- Linux 用户篇——用户管理的配置文件
- 同步与异步、并行与并发、阻塞与挂起
- ASCII表 基本记忆 -- C
- 解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法
- 计算机丨浏览器访问出现DNS_PROBE_POSSIBLE解决方法
- html js加载404_【第 245 期】2020 年,JS 令一个新人沮丧
- 推荐一个PPT副业,日赚800-1000元
- 前端程序员 学习书籍推荐
- 汤小丹计算机操作系统慕课版课后题答案第四章:进程同步
- Windows配置Caffe教程
- 抖音:时间熔炉的诞生
- WYSE S10、WYSE V90、HP T5740瘦客机评测
- redis持久化、主从和哨兵模式详解
- 2020最新广告法_2020最新广告法全文解读
- 聊聊前端框架——尤雨溪
- 程序员泪流满面的瞬间,第三季
- python趣味编程---羊车门问题
- 利用html 和css模仿必应搜索主页。(一)