我真的很想使用swift进行嵌入式编程,因为我觉得它更适合用于c ++,我使用的处理器是ARM Cortex-M4F(http://www.ti.com/tool/ek-tm4c123gxl)).看一下swift编译器页面,它说你可以从swift源生成LLVM IR然后我希望与LLVM交叉编译.这可能吗?
是否可以使用abc.abstractproperty创建一个具体的getter,但使setter抽象,使其对每个继承类都不同.我为每个子类处理val的设置.
例如.
@abstractproperty
def val(self):
return self._val
@val.setter
def val(self, x):
pass
Run Code Online (Sandbox Code Playgroud) 我在使用 pytest 时遇到问题,在 sys.path 列表中不包括我的项目 rootdir。相反,它包括默认情况下测试所在的目录。
这是我的项目结构。
proj/
setup.py
mypackage/
__init__.py
a.py
tests/
test_a.py
Run Code Online (Sandbox Code Playgroud)
运行 pytest 时
py.test proj/mypackage/tests
Run Code Online (Sandbox Code Playgroud)
它将proj/mypackage/tests插入到 sys.path 中,这并不好,因为现在我无法导入 a,因为它与测试目录无关。
我注意到 py.test 检测到一个 rootdir,它被识别为我的项目的根目录,即 proj 目录。这是我在测试期间在 sys.path 中想要的,所以我的所有代码都是相对于该目录的。我如何确保 py.test在 sys.path 中包含(...)/proj/以便我可以import mypackage.a在 test_a.py 中。
我正在尝试对测试场景进行参数化,因此我不必为xUnit样式测试中的每个场景制作单独的案例.
这是pytest的一个例子,我正在尝试复制我自己的用例.
from datetime import datetime, timedelta
testdata = [
(datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)),
(datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)),
]
@pytest.mark.parametrize("a,b,expected", testdata)
def test_timedistance_v0(a, b, expected):
diff = a - b
assert diff == expected
Run Code Online (Sandbox Code Playgroud)
上面的工作很好,但是当我尝试修改它以供我使用时,如下所示.我收到一条错误,说"找不到"转储夹具.我不知道发生了什么.这是我第一次使用pytest,所以也许我没有得到什么.
dump1 = load_dump(pathtodump1,pathtodump2) # load_dump can take multiple params
dump2 = load_dump(pathtodump3)
scenarios = [(dump1,{'prod_str':None}),
(dump2,{'prod_str':"123"})]
@pytest.mark.paramaterize("dump,expected_meta", scenarios)
def test_metadump_profiles(dump, expected_meta):
meta = dump.meta
assert meta.prod_str == expected_meta['prod_str']
Run Code Online (Sandbox Code Playgroud)
这是我从pytest得到的错误.我还应该提一下,当我调试时,测试永远不会运行,它会在paramaterize装饰器中的某处失败.
========================================================================= ERRORS ==========================================================================
________________________________________________________ ERROR at setup of test_metadump_profiles _________________________________________________________ …Run Code Online (Sandbox Code Playgroud) 我做了一个看起来像这样的常量装饰
def constant(f):
def fset(self, value):
raise TypeError
@wraps(f)
def fget(self):
return f()
return property(fget, fset)
Run Code Online (Sandbox Code Playgroud)
但是当我在函数上使用它并调用它时,由于没有传递足够的参数而引发类型错误,我认为添加包装装饰器可以解决这个问题,但事实并非如此。
class IrrigationAmount(AbstractCalculation):
def __init__(self, wvf, fc):
self._wvf = float(wvf)
self._fc = float(fc)
self._value = 0
def calculate(self):
self._value = (self.fc*SECTORVOLUME - self.wvf*SECTORVOLUME)/FLOWRATE
@constant
def value(self):
return self._value
Run Code Online (Sandbox Code Playgroud)
这是我测试的方法,我不明白我做错了什么,主要是为什么 self 由于换行而没有被自动传递。我可能误解了wrapper 的作用。
>>> from irrigationservice.irrigation import IrrigationAmount
>>> a = IrrigationAmount(0.12, 0.2)
>>> a.calculate()
>>> a.value
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/krishna/Documents/irrigationwebserver/webserver/irrigationservice/utils.py", line 12, in fget
return …Run Code Online (Sandbox Code Playgroud) 以下是我在django中查看的响应.由于某种原因,Web检查器识别出content_type是application/json,但在使用httpie时,它将其识别为text/html.我做错了什么,我信任哪个?
这是我的观看代码:
def RegistrationView(request):
if request.method == 'GET':
reg_user = User.objects.create(username=str(User.objects.all().count()+1), password=str(uuid.uuid4()))
reg_user.save()
serialized_user = UserSerializer(reg_user)
json_rend = JSONRenderer()
import ast
return JsonResponse(ast.literal_eval(json_rend.render(serialized_user.data)))
return HttpResponse("woah")
Run Code Online (Sandbox Code Playgroud)
python ×5
pytest ×2
arm ×1
django ×1
http ×1
llvm ×1
llvm-clang ×1
llvm-ir ×1
swift ×1
unit-testing ×1