小编jen*_*ton的帖子

我如何模拟部分python构造函数进行测试?

我是Python的新手,所以如果这是一个重复或过于简单的问题我会道歉.我编写了一个协调器类,调用另外两个使用kafka-python库来发送/读取Kafka数据的类.我想为我的协调员课程编写一个单元测试,但是我很难弄清楚如何最好地解决这个问题.我希望我可以创建一个替代构造函数,我可以将我的模拟对象传递给,但这似乎不起作用,因为我得到一个错误,test_mycoordinator无法解决.我是否会以错误的方式测试这门课程?我应该测试一种pythonic方式吗?

这是我的测试类到目前为止的样子:

import unittest
from mock import Mock
from mypackage import mycoordinator

class MyTest(unittest.TestCase):

    def setUpModule(self):
        # Create a mock producer
        producer_attributes = ['__init__', 'run', 'stop']
        mock_producer = Mock(name='Producer', spec=producer_attributes)

        # Create a mock consumer
        consumer_attributes = ['__init__', 'run', 'stop']
        data_out = [{u'dataObjectID': u'test1'},
                    {u'dataObjectID': u'test2'},
                    {u'dataObjectID': u'test3'}]
        mock_consumer = Mock(
            name='Consumer', spec=consumer_attributes, return_value=data_out)

        self.coor = mycoordinator.test_mycoordinator(mock_producer, mock_consumer)

    def test_send_data(self):
        # Create some data and send it to the producer
        count = 0
        while count < 3:
            count += 1 …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking python-mock

15
推荐指数
1
解决办法
2万
查看次数

我在哪里放一个conda-recipe相对于我的项目?

我创建了一个python项目,我想用conda构建但是当我cd到conda-recipe文件夹并运行conda build .找不到setup.py文件时我收到错误.我已经尝试将conda-recipe移动到与setup.py相同的级别并将source部分添加到我的meta.yaml但是我仍然收到错误.将conda-recipe相对于我的python包放在哪里的最佳位置?

这是我的项目结构:

- MyProject/
  |- conda-recipe/
    |- bld.bat
    |- build.sh
    |- meta.yaml
  |- code/
    |- subpackage/
      |- __init__.py
      |- foo.py
  |- tests/
    |- test_foo.py
  |-setup.py
Run Code Online (Sandbox Code Playgroud)

这是我的bld.bat的内容:

"%PYTHON%" setup.py sdist install
if errorlevel 1 exit 1
Run Code Online (Sandbox Code Playgroud)

而build.sh:

#!/bin/bash

$PYTHON setup.py sdist install     
Run Code Online (Sandbox Code Playgroud)

和meta.yaml:

package:
  name: myproject
  version: "1.0.0" 

source:
  path: ../code

requirements:
  build:
    - python
    - setuptools

  run:
    - python
    - argparse
Run Code Online (Sandbox Code Playgroud)

为了完整性,这里是错误:

(C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env) 
  C:\Anaconda2\conda-bld\myproject_1492545717354\work>
  "C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe" setup.py 
  sdist install C:\Anaconda2\conda-bld\myproject_1492545717354\_b_env\python.exe: 
  can't open file 'setup.py': [Errno 2] No …
Run Code Online (Sandbox Code Playgroud)

python anaconda conda

8
推荐指数
1
解决办法
1251
查看次数

我如何JUnit测试一个Spring自动装配的构造函数?

我在线搜索了很多,我找不到使用自动装配构造函数进行单元测试的示例.我使用Spring自动将属性文件中的值自动装入我的应用程序.我想单元测试MyApp.java的start方法,但我有一个自动装配的构造函数,所以我不知道如何实例化MyApp.没有自动装配的属性,我在单元测试中这样做:

@Test
public void testStart() {
  try{
   MyApp myApp = new MyApp();
   myApp.start();
   }
   catch (Exception e){
     fail("Error thrown")
   }
}
Run Code Online (Sandbox Code Playgroud)

我不想模拟自动装配,因为我需要从属性文件中获取值并使事情进一步复杂化,我通过注释配置所有内容.我没有spring.xml,application-context.xml或web.xml文件.那么我该如何实例化/测试MyApp的start方法呢?我尝试添加@RunWith(SpringJUnit4ClassRunner.class)并自动装载MyApp myApp,但是它会导致错误,无法通过在测试类上实现ApplicationContextAware来加载未修复的应用程序上下文.

这是MyApp.java

@Component
public class MyApp {

    private static ApplicationContext applicationContext;
    private static MyAppProperties myAppProperties;

    //Obtain the values from the app.properties file
    @Autowired
    MyApp(MyAppProperties myAppProps){
        myAppProperties = myAppProps;
    }

    public static void main(String[] args) throws Exception {
     // Instantiate the application context for use by the other classes
     applicationContext = new AnnotationConfigApplicationContext("com.my.company");

     start();
    }

    /**
     * Start the …
Run Code Online (Sandbox Code Playgroud)

junit spring unit-testing

7
推荐指数
1
解决办法
1万
查看次数

如何告诉swagger-codgen关于我的自定义生成器?

我试图根据现有的JAX-RS生成器制作一个自定义的swagger代码生成器.我按照Swagger-Codegen GitHub页面上的说明使用命令java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar meta -o output/myLibrary -n ABCCodegen -p com生成了一个模块.abc.codegen.我创建了我需要的模板并更新了AbcCodegenGenerator.java文件.

我尝试运行代码时遇到了问题.命令java -cp swagger-codegen-cli.jar:ABCCodegen-swagger-codegen-1.0.0.jar io.swagger.codegen.Codegen -l ABCCodegen -o ./test给出错误无法找到或加载主类io.swagger.codegen.Codegen.在查看Swagger Google Group上的帖子后,我尝试运行命令java -cp ABCCodegen-swagger-codegen-1.0.0.jar -jar swagger-codegen-cli.jar langs.但是,我的自定义模块abc未显示在列表中.在java类本身中是否需要以编程方式执行某些操作来告诉codegen关于我的生成器?

这是我的班级AbcCodegenGenerator.java:

package com.abc.codegen;



import io.swagger.codegen.*;
import io.swagger.models.Operation;
import io.swagger.codegen.languages.*;

import java.util.*;
import java.io.File;



public class AbcCodegenGenerator extends AbstractJavaJAXRSServerCodegen {
 public AbcCodegenGenerator(){
  super();

  sourceFolder = "src/main/java";
        invokerPackage = "io.swagger.api";
        artifactId = "com.abc";
        outputFolder = "generated-code/ABCCodegen";

        modelTemplateFiles.put("model.mustache", ".java"); 

        //Classes for the API
        apiTemplateFiles.put("api.mustache", ".java");
        apiTemplateFiles.put("apiService.mustache", ".java");
        apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); …
Run Code Online (Sandbox Code Playgroud)

java code-generation swagger swagger-2.0

6
推荐指数
1
解决办法
6841
查看次数

无法使用 Kafka-Python 的反序列化器从 Kafka 消费 JSON 消息

我正在尝试通过 Kafka 发送一个非常简单的 JSON 对象,并使用 Python 和 kafka-python 从另一端读出它。但是,我一直看到以下错误:

2017-04-07 10:28:52,030.30.9998989105:kafka.future:8228:ERROR:10620:Error processing callback
Traceback (most recent call last):
  File "C:\Anaconda2\lib\site-packages\kafka\future.py", line 79, in _call_backs
    f(value)
  File "C:\Anaconda2\lib\site-packages\kafka\consumer\fetcher.py", line 760, in _handle_fetch_response
    unpacked = list(self._unpack_message_set(tp, messages))
  File "C:\Anaconda2\lib\site-packages\kafka\consumer\fetcher.py", line 539, in _unpack_message_set
    tp.topic, msg.value)
  File "C:\Anaconda2\lib\site-packages\kafka\consumer\fetcher.py", line 570, in _deserialize
    return f(bytes_)
  File "C:\Users\myUser\workspace\PythonKafkaTest\src\example.py", line 55, in <lambda>
    value_deserializer=lambda m: json.loads(m).decode('utf-8'))
  File "C:\Anaconda2\lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Anaconda2\lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) …
Run Code Online (Sandbox Code Playgroud)

python json kafka-python

6
推荐指数
2
解决办法
7921
查看次数