我有一个要测试的 python 项目。我已经有了单元测试,unittest但我需要做集成测试。
为此,我有两个应用程序:我必须测试的真实应用程序和一个“测试”应用程序,它将向第一个应用程序发送请求,等待响应,然后将其与预期结果进行比较:
这样我就可以测试应用程序是否正确响应请求。
目前,我有我上面描述的内容,但在 main.py(不是特定的测试文件)中。另外,比较只是用打印功能完成的,所以我可以看到它的工作原理。但是我必须执行这些测试并能够以常规格式(例如 junit xml)获得结果。
我如何编写、运行和获取这些测试的结果?
编辑
我正在开发 Azure IoT Edge 模块,并且正在使用 Route 来连接模块。这是测试模块的代码,我需要在其中执行测试:
import random
import time
import sys
import iothub_client
import json
# pylint: disable=E0611
from iothub_client import IoTHubModuleClient, IoTHubClientError, IoTHubTransportProvider
from iothub_client import IoTHubMessage, IoTHubMessageDispositionResult, IoTHubError
# Callback received when the message that we're forwarding is processed.
def send_confirmation_callback(message, result, user_context):
print ( "Confirmation[%d] received for message with result = %s" % (user_context, result) )
# receive_message_callback is invoked when an …Run Code Online (Sandbox Code Playgroud) python testing integration-testing azure-iot-hub azure-iot-edge
我们现有的物联网平台使用 Azure 协议网关并且运行良好。我刚刚意识到 MS Azure 推出了一个新版本的协议网关,称为IoT Edge。我只是在寻找 IoT Edge 中可用的新功能,现在我完全混淆了这两个组件:
我知道答案可能是一个更广泛的讨论,但谁能提供一个简单的解释?
它可能有点长,但我认为它很容易阅读......所以让我们开始......
我有一个使用IoT Edge Tools创建的 IoT-Edge 解决方案。它生成一个 Dockerfile,该文件非常适合没有外部 DLL 作为依赖项的项目。
当我在这个模块 ( ) 中添加多个 DLL ( MySqlAdapter, BaseAdapter, ) 时,问题就出现了,而在尝试构建镜像时没有更改 Dockerfile,HelperMyEdgeModule
它抛出一个错误:
正在跳过项目“/MySqlAdapter/MySqlAdapter.csproj”,因为找不到它。正在跳过项目“/MySqlAdapter/MySqlAdapter.csproj”,因为找不到它。
...
...:警告:引用的项目“../MySqlAdapter/MySqlAdapter.csproj”不存在。[/app/MyEdgeModule.csproj]
这是生成的 DockerfileMyEdgeModule
FROM microsoft/dotnet:2.1-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
RUN dotnet restore
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:2.1-runtime-stretch-slim
WORKDIR /app
COPY --from=build-env /app/out ./
RUN useradd -ms /bin/bash moduleuser
USER moduleuser
ENTRYPOINT ["dotnet", "MyEdgeModule.dll"]
Run Code Online (Sandbox Code Playgroud)
这些类库项目位于 …
预期: 使用带有 EventHubTrigger-CSharp 模板的函数应用程序会在新事件进入时运行。
实现:使用https://azure.microsoft.com/en-us/documentation/articles/functions-bindings-event-hubs/ 中的非常基本的示例
结果: 解释方法:
public static void Run(string myEventHubMessage, TraceWriter log)
{
log.Info($"C# Event Hub trigger function processed a message: {myEventHubMessage}");
}
Run Code Online (Sandbox Code Playgroud)
确实传递事件队列中的“第一个”而不是当前的。
额外的:
问题: 如何在函数应用中接收集线器上的最新事件?
更多信息: 我需要将新信号从事件中心转发到外部 mqtt api(到目前为止有效)。也许我需要另一种方法?
目前有两个主要选项可以在 Azure IoT Edge 上创建自定义的基于代码的模块:
所以现在我的问题是,当我想在 .NET Core (C#) 中编写自定义代码时,使用一个比另一个有什么好处?
函数所需的样板代码要少得多,但性能如何呢?
connectionState从1000台设备中获取数据的最佳方法。当前没有那么多设备,但是需要有效的解决方案。
根据我的理解,目前我可以connectionState使用
Queries(select * from devices) 或registryManager.GetDevicesAsync(100);-这些方法在查询1000个设备时不是实时的,或者在设备数量增加时效率不高。如果以上任何一项我有误,请提出一些建议并纠正我。
azure azure-eventhub azure-iot-hub azure-iot-sdk azure-iot-edge
我正在自定义 Debian Linux 发行版上运行 IoT Edge 透明网关,但我时不时地遇到此错误“无法启动 Kestrel”。有谁知道这个错误的原因是什么?
2018-05-06 23:54:49.750 +00:00 [INF] - Starting Edge Hub
2018-05-06 23:54:49.756 +00:00 [INF] - Version - 1.0.0-preview022.11567621 (12a8e1bb63e619b17ca685efd470ad3f412034f4)
2018-05-06 23:54:49.757 +00:00 [INF] -
?????? ??????????? ?????????? ????????
??????????????????? ???????????????????
???????? ????? ??? ?????????????????
???????? ????? ??? ?????????????????
??? ??????????????????????? ???????????
??? ??????????? ??????? ??? ???????????
??? ??????? ????????? ??????????????? ??????? ????????
????????????????????? ???????????????????????? ????????
?????? ??? ??? ?????? ??? ?????? ??????????
?????? ??? ??? ?????? ??? ?????? ?????????
???????????? ??? ?????????????????????????????????
??? ??????? …Run Code Online (Sandbox Code Playgroud) 我按照文档https://docs.microsoft.com/en-us/azure/iot-edge/how-to-develop-python-module 中的示例进行操作并进行了一些尝试。
我尝试像在 docker 中那样将路径装入 IoT 模块容器,但没有成功。我在 deployments.template.json 的 createOptions 中添加了以下内容:
"createOptions": {
"Volumes": {
"D:\\test":"/test"
}
}
Run Code Online (Sandbox Code Playgroud)
这会导致 RUNTIME RESPONSE: 400 - 部署配置格式错误或无效。
我的问题:
在我们的场景中,我们有一堆设备与网关进行本地通信。网关负责聚合来自设备的事件并将其发送到云端。它还应该从云端接收设备配置更改并将其传输到特定设备。
根据我的阅读,我认为这实际上是一个典型的 IoT 中心场景。我们非常希望使用 IoT Hub 提供的设备管理、消息传递甚至双胞胎。
但是,设备之间的通信方式已经实现,不得更改。这意味着设备本身无法创建连接并提供 IoT 中心凭据。这排除了使用azure-iot-protocol-gateway或类似的。
我们宁愿需要网关充当可以代表其他设备的设备。网关会检测哪些设备在他的本地网络中并订阅它们的主题(通过 MQTT 或 AMQP)。
这甚至可能吗?设备能否代替其他设备发送事件或收听 Cloud-To-Device 消息?
我有在 Ubuntu 服务器下工作的设备,我创建了两个应用程序,它们实际上是我的“固件”我的目标是通过使用 Azure IoT Edge 更新这两个应用程序并创建某种发送健康和传感器状态的代理。我读了几篇文章,但仍有疑问:
提前感谢有关如何创建自定义固件的任何链接。
azure-iot-edge ×10
azure ×6
.net-core ×2
iot ×2
c# ×1
docker ×1
dockerfile ×1
firmware ×1
python ×1
testing ×1