机器人框架如何为不同国家/地区获取不同的时区和区域设置?

时间:2017-07-06 02:14:16

标签: python robotframework

在机器人框架中,获取时区的当前受支持的关键字是:

${month}  Get Current Date  result_format=%B%Y

将返回:2017年7月

问题是如何从其他国家和地区获取当前日期? 例如越南应该返回:Tháng Bảy 2017 泰国应该返回:กรกฎาคม พ.ศ. 2560

2 个答案:

答案 0 :(得分:3)

不幸的是,python没有很好的内置支持来格式化当前语言环境中的日期。您可以暂时切换区域设置,但这不是一个很好的解决方案。

您可以使用Babel包格式化日期,但它并没有提供您期望的完全相同的值 - 情况略有不同。

例如,您可以创建一个以月,年和区域为日期的关键字,并返回格式化版本。

首先,创建一个名为CustomKeywords.py的python文件,其中包含以下内容:

# CustomKeywords.py
import datetime
from babel.dates import format_date

class CustomKeywords:
    def get_date_for_locale(self, locale, year, month=1, day=1):
        d = datetime.date(int(year), int(month), int(day))
        return format_date(d, "MMMM Y", locale=locale)

接下来,将此库导入您的测试用例,然后调用get date for locale以获取给定语言环境的日期:

*** Settings ***
Library  CustomKeywords.py

*** Test Case ***
Vietnamese
    ${date}=  get date for locale  vi_VN  2017  7
    Should be equal  ${date}  tháng bảy 2017

Thailand
    ${date}=  get date for locale  th_TH  2017  7
    Should be equal  ${date}  กรกฎาคม 2017

答案 1 :(得分:0)

在Robot Framework Datetime库中,不存在更改TimeZone的概念。 Robot Framework Custom Timestamp函数依赖于底层的Python datatime.strptime函数。此函数使用python Locale进行格式化。

由于这已经成为一个更普遍的Python问题,我已经搜索过SO并发现这个特定的SO answer符合为Robot Framework创建自定义Python关键字的条件,该关键字允许更改Locale和从而确定输出。