我正处于一个项目中,我们开始重构一些庞大的代码库.立即出现的一个问题是每个文件都导入了很多其他文件.我如何以优雅的方式在我的单元测试中模拟这个而不必改变实际的代码,这样我就可以开始编写单元测试了?
举个例子:带有我要测试的函数的文件,导入其他十个文件,这些文件是我们软件的一部分而不是python核心库.
我希望能够尽可能单独运行单元测试,现在我只测试不依赖于正在导入的文件中的内容的函数.
感谢所有的答案.
我从一开始就不知道自己想做什么,但现在我想我知道了.
问题是有些导入只有在整个应用程序运行时才有可能因为某些第三方自动魔法而导致.所以我不得不在我用sys.path指出的目录中为这些模块制作一些存根
现在,我可以在单元测试文件中导入包含我要编写测试功能的文件,而不会抱怨缺少模块.
我正在写一个线程的画布.
public void draw(Canvas canvas) {
Paint p = new Paint();
p.setAntiAlias(true);
p.setTextSize(30);
p.setColor(Color.WHITE);
p.setTextAlign(Paint.Align.CENTER);
canvas.drawText("Centered", xCentre, yCentre, p);
}
Run Code Online (Sandbox Code Playgroud)
我的问题开始时,我有一个多颜色SpannableStringBuilder
,我想写在画布上,我不知道如何做到这一点.SpannableStringBuilder
有一种drawText()
方法,我一直无法使用.或者是否有其他方法将字符串写入画布,其中一些字母具有不同的颜色?
我有一个使用pexpect启动CLI程序的脚本.它的工作方式有点像shell,你可以在其中输入一些命令.
我认为,我遇到的问题是该程序使用彩色提示.
这就是我的工作
import pprint
import pexpect
1 a = pexpect.spawn('program')
2 a.expect("prompt>")
3 print "---------start------------"
4 print(a.before)
5 a.sendline("command")
6 a.expect("prompt>")
7 print "---------before------------"
8 pprint.pprint(a.before)
9 print "---------after------------"
10 pprint.pprint(a.after)
Run Code Online (Sandbox Code Playgroud)
这是输出:
> python borken.py
---------start------------
A lot of text here from the enjoying programs start-up, lorem ipsum ...
---------before------------
' \x1b[0m\x1b[8D\x1b[K\x1b[1m\x1b[34m'
---------after------------
'prompt>'
Run Code Online (Sandbox Code Playgroud)
由于某种原因,第一个提示颜色编码使事情变得困难,并且在第8行之前是乱码,正常打印不起作用,即使我看到第5行的命令实际产生了大量输出.
有人知道问题可能是什么,或者是否可以在pexpect中设置终端类型以避免颜色?
我正在使用tcsh shell
I am creating a small app using Mosby.
The app has a service which I want to bind to. I guess the correct place to do this is in the presenter. But I can't really figure out how to do it.
What I want to archive is when the service is bound I want to call a method on it and push that value to the view, so that the state right now is correct.
When the service sends updates …