Как заставить тесты ждать завершения развертывания Vert.x Verticle

Рассмотрение фрейма данных testdataframe

testdataframe = pd.DataFrame(np.arange(12).reshape(4,3))

print(testdataframe)

   0   1   2
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

Вы можете объединить styles в один список строк, как в styles, определенный ниже. Я также определю ширины линий в lws

styles=['bs-', 'ro-', 'y^-']
lws = [2, 1, 1]

. Мы можем использовать метод plot в testdataframe, передавая список styles параметру style. Обратите внимание, что мы могли бы также передавать словарь (и, возможно, другие вещи).

Однако ширина строк не так легко обрабатывается. Сначала я захватил объект AxesSubplot и перебирал атрибут линий, устанавливающий ширину линии.

ax = testdataframe.plot(style=styles)
for i, l in enumerate(ax.lines):
    plt.setp(l, linewidth=lws[i])

1
задан LeYAUable 17 January 2019 в 10:52
поделиться

1 ответ

Чего вам не хватает, так это Async async = context.async();. При этом юнит-тест остается в методе до тех пор, пока он не будет установлен для завершения. Затем вы можете организовать свой асинхронный код следующим образом:

  • сначала развернуть вертикал
  • , затем выполнить loadtestGeneration
  • , чтобы установить асинхронное выполнение так, чтобы другие Методы unittest уже могут получить доступ к вашей вертикалке без nullpointerexception

Я также сделал некоторую очистку, проверьте ее:

BeforeClass

  @BeforeClass
  public static void before2(TestContext context){
    Async async = context.async();
    vertx = Vertx.vertx();
    DeploymentOptions options = new DeploymentOptions();
    byte[] encoded;
    JsonObject config;

    try {
      encoded = Files.readAllBytes(Paths.get("src/main/resources/config.json"));
      config = new JsonObject(new String(encoded, Charset.defaultCharset()));
      options.setConfig(config);
      jdbc = JDBCClient.createShared(vertx, config , "PostgreSQL");

      deployVerticle2(options)
        .compose(c -> loadTestData2(jdbc))
        .setHandler(h -> {
          if(h.succeeded()){
            async.complete();
          }else{
            context.fail(h.cause());
          }
        });

    } catch (IOException e){
      context.fail(e);
    }
  }

DeployVerticle

[ 111]

LoadTestData

  private static Future<Void> loadTestData2(JDBCClient jdbc){
    Future<Void> future = Future.future();

    jdbc.getConnection(connection -> {
      if (connection.succeeded()) {
        connection.result().query(deleteTestDataGeneration, queryResult -> {
          if(queryResult.failed()){
            connection.result().close();
            future.fail(queryResult.cause());
          }else{
            connection.result().close();
            future.complete();
          }
        });
      } else {
        future.fail(connection.cause());
      }
    });

    return future;
  }
0
ответ дан taygetos 17 January 2019 в 10:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: